promod 0.0.26 → 0.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/built/swd/swd_client.js +5 -5
- package/built/swd/swd_client.js.map +1 -1
- package/built/swd/swd_element.js +1 -5
- package/built/swd/swd_element.js.map +1 -1
- package/package.json +3 -3
- package/specs/base.spec.ts +13 -4
- package/lib/index.ts +0 -5
- package/lib/swd/config/config.ts +0 -51
- package/lib/swd/config/index.ts +0 -1
- package/lib/swd/driver/index.ts +0 -42
- package/lib/swd/driver/local.ts +0 -142
- package/lib/swd/driver/remote.ts +0 -35
- package/lib/swd/index.ts +0 -17
- package/lib/swd/swd_client.ts +0 -351
- package/lib/swd/swd_element.ts +0 -397
package/built/swd/swd_client.js
CHANGED
|
@@ -219,6 +219,11 @@ class Browser {
|
|
|
219
219
|
return executeScriptArgs;
|
|
220
220
|
}
|
|
221
221
|
async quit() {
|
|
222
|
+
if (this.drivers && this.drivers.length) {
|
|
223
|
+
const index = this.drivers.findIndex((driver) => driver === this.seleniumDriver);
|
|
224
|
+
if (index !== -1)
|
|
225
|
+
this.drivers.splice(index, 1);
|
|
226
|
+
}
|
|
222
227
|
await this.seleniumDriver.quit();
|
|
223
228
|
this.seleniumDriver = null;
|
|
224
229
|
}
|
|
@@ -238,11 +243,6 @@ class Browser {
|
|
|
238
243
|
}
|
|
239
244
|
}
|
|
240
245
|
async close() {
|
|
241
|
-
if (this.drivers.length) {
|
|
242
|
-
const index = this.drivers.findIndex((driver) => driver === this.seleniumDriver);
|
|
243
|
-
if (index !== -1)
|
|
244
|
-
this.drivers.splice(index, 1);
|
|
245
|
-
}
|
|
246
246
|
await this.seleniumDriver.close();
|
|
247
247
|
}
|
|
248
248
|
actions() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swd_client.js","sourceRoot":"","sources":["../../lib/swd/swd_client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"swd_client.js","sourceRoot":"","sources":["../../lib/swd/swd_client.ts"],"names":[],"mappings":"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"}
|
package/built/swd/swd_element.js
CHANGED
|
@@ -193,11 +193,7 @@ class PromodSeleniumElement {
|
|
|
193
193
|
* const buttonIsDisplayed = await button.isDisplayed();
|
|
194
194
|
*/
|
|
195
195
|
async isDisplayed() {
|
|
196
|
-
|
|
197
|
-
if (sat_utils_1.isBoolean(result) && !result) {
|
|
198
|
-
return false;
|
|
199
|
-
}
|
|
200
|
-
return this.wdElement.isDisplayed().then((res) => res, () => false);
|
|
196
|
+
return this.getElement().then(() => this.wdElement.isDisplayed()).catch(() => false);
|
|
201
197
|
}
|
|
202
198
|
/**
|
|
203
199
|
* @returns {Promise<boolean>} button is present
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swd_element.js","sourceRoot":"","sources":["../../lib/swd/swd_element.ts"],"names":[],"mappings":";;;AAAA,4BAA4B;AAC5B,yCAAqE;AACrE,2DAA6D;
|
|
1
|
+
{"version":3,"file":"swd_element.js","sourceRoot":"","sources":["../../lib/swd/swd_element.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "promod",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.30",
|
|
4
4
|
"description": "Library for automation testing",
|
|
5
5
|
"main": "./built/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
],
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"@types/selenium-webdriver": "^4.0.15",
|
|
51
|
-
"sat-utils": "0.0.
|
|
51
|
+
"sat-utils": "^0.0.25",
|
|
52
52
|
"selenium-standalone": "^7.1.0",
|
|
53
|
-
"selenium-webdriver": "^4.0.0
|
|
53
|
+
"selenium-webdriver": "^4.0.0"
|
|
54
54
|
}
|
|
55
55
|
}
|
package/specs/base.spec.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import {By, WebDriver, until, Key} from 'selenium-webdriver';
|
|
1
2
|
import {expect} from 'assertior';
|
|
2
3
|
import {seleniumWD} from '../lib/index';
|
|
3
4
|
|
|
@@ -5,7 +6,7 @@ describe('Base', () => {
|
|
|
5
6
|
const {$, $$, getSeleniumDriver, browser} = seleniumWD;
|
|
6
7
|
|
|
7
8
|
beforeEach(async () => {
|
|
8
|
-
await getSeleniumDriver(
|
|
9
|
+
await getSeleniumDriver(browser);
|
|
9
10
|
await browser.get('http://localhost:4000/');
|
|
10
11
|
});
|
|
11
12
|
|
|
@@ -13,6 +14,13 @@ describe('Base', () => {
|
|
|
13
14
|
await browser.quitAll();
|
|
14
15
|
});
|
|
15
16
|
|
|
17
|
+
it('isDisplayed', async () => {
|
|
18
|
+
const email = $('input[placeholder="Ім\'я lol"]');
|
|
19
|
+
|
|
20
|
+
expect(await email.isDisplayed()).toEqual(false);
|
|
21
|
+
expect(await email.isPresent()).toEqual(false);
|
|
22
|
+
});
|
|
23
|
+
|
|
16
24
|
it('several browsers', async () => {
|
|
17
25
|
const email = $('input[placeholder="Ім\'я користувача"]');
|
|
18
26
|
const pass = $('input[placeholder="пароль"]');
|
|
@@ -36,12 +44,13 @@ describe('Base', () => {
|
|
|
36
44
|
expect(await pass.isDisplayed()).toEqual(true);
|
|
37
45
|
});
|
|
38
46
|
|
|
39
|
-
it('element click/sendKeys', async () => {
|
|
47
|
+
it.only('element click/sendKeys', async () => {
|
|
40
48
|
const email = $('input[placeholder="Ім\'я користувача"]');
|
|
41
49
|
const pass = $('input[placeholder="пароль"]');
|
|
42
50
|
const signIn = $('.login_form .btn-primary');
|
|
43
|
-
await
|
|
44
|
-
await
|
|
51
|
+
await browser.actions().keyDown(Key.SHIFT).perform();
|
|
52
|
+
await email.sendKeys(`${Key.SHIFT}a`);
|
|
53
|
+
await browser.sleep(12000);
|
|
45
54
|
await signIn.click(true);
|
|
46
55
|
});
|
|
47
56
|
|
package/lib/index.ts
DELETED
package/lib/swd/config/config.ts
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import {isString, isUndefined} from 'sat-utils';
|
|
2
|
-
import * as fs from 'fs';
|
|
3
|
-
|
|
4
|
-
const checkPathes = ['seleniumServerJar', 'chromeDriver', 'geckoDriver'];
|
|
5
|
-
const checkString = ['seleniumAddress', 'seleniumSessionId', 'baseUrl'];
|
|
6
|
-
|
|
7
|
-
export type BaseConf = {
|
|
8
|
-
[key: string]: any;
|
|
9
|
-
localSeleniumStandaloneOpts?: {
|
|
10
|
-
port?: number | string;
|
|
11
|
-
args?: string[];
|
|
12
|
-
jvmArgs?: string[];
|
|
13
|
-
};
|
|
14
|
-
// Selenium drivers options
|
|
15
|
-
seleniumServerJar?: string;
|
|
16
|
-
chromeDriver?: string;
|
|
17
|
-
geckoDriver?: string;
|
|
18
|
-
|
|
19
|
-
seleniumAddress?: string;
|
|
20
|
-
seleniumSessionId?: string;
|
|
21
|
-
// Browser capabilities
|
|
22
|
-
capabilities?: {
|
|
23
|
-
[key: string]: any;
|
|
24
|
-
browserName?: string;
|
|
25
|
-
};
|
|
26
|
-
// Opts
|
|
27
|
-
baseUrl?: string;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function validateSeleniumConf(configObj: BaseConf) {
|
|
31
|
-
const configKeys = Object.keys(configObj);
|
|
32
|
-
for (const key of configKeys) {
|
|
33
|
-
if ((checkPathes.includes(key) || checkString.includes(key)) && (!isString(configObj[key]) && !isUndefined(configObj[key]))) {
|
|
34
|
-
throw new TypeError(`
|
|
35
|
-
config: ${key} value should be a string,
|
|
36
|
-
please use BaseConf type or visit https://github.com/Simple-Automation-Testing/promod/blob/master/lib/swd/config/config.ts
|
|
37
|
-
`);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
if (checkPathes.includes(key) && (!isUndefined(configObj[key]) && isString(configObj[key]) && !fs.existsSync(configObj[key]))) {
|
|
41
|
-
throw new TypeError(`
|
|
42
|
-
config: ${key} ${configObj[key]} file does not exist
|
|
43
|
-
please use BaseConf type or visit https://github.com/Simple-Automation-Testing/promod/blob/master/lib/swd/config/config.ts
|
|
44
|
-
`);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export {
|
|
50
|
-
validateSeleniumConf
|
|
51
|
-
};
|
package/lib/swd/config/index.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './config';
|
package/lib/swd/driver/index.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import {WebDriver} from 'selenium-webdriver';
|
|
2
|
-
import {getDriver} from './remote';
|
|
3
|
-
import {BaseConf} from '../config/config';
|
|
4
|
-
import {Browser} from '../swd_client';
|
|
5
|
-
import {validateSeleniumConf} from '../config';
|
|
6
|
-
|
|
7
|
-
async function getSeleniumDriver(config: BaseConf | Browser = {}, browser?: Browser): Promise<WebDriver> {
|
|
8
|
-
let _config;
|
|
9
|
-
let _browser;
|
|
10
|
-
|
|
11
|
-
if (config instanceof Browser && arguments.length === 1) {
|
|
12
|
-
_browser = config;
|
|
13
|
-
_config = {};
|
|
14
|
-
} else {
|
|
15
|
-
_browser = browser;
|
|
16
|
-
_config = config;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
// validate config
|
|
20
|
-
validateSeleniumConf(_config);
|
|
21
|
-
|
|
22
|
-
const driver = await getDriver(_config);
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* @info
|
|
26
|
-
* init creations of the new driver
|
|
27
|
-
* and init current driver
|
|
28
|
-
*/
|
|
29
|
-
|
|
30
|
-
_browser.setCreateNewDriver = () => getDriver(_config);
|
|
31
|
-
_browser.setClient(driver);
|
|
32
|
-
|
|
33
|
-
if (config.baseUrl) {
|
|
34
|
-
_browser.baseUrl = config.baseUrl;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
return driver;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
export {
|
|
41
|
-
getSeleniumDriver
|
|
42
|
-
};
|
package/lib/swd/driver/local.ts
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import * as fs from 'fs';
|
|
2
|
-
import * as computeFsPaths from 'selenium-standalone/lib/compute-fs-paths';
|
|
3
|
-
import * as standAloneDefaultConfig from 'selenium-standalone/lib/default-config';
|
|
4
|
-
|
|
5
|
-
import {SeleniumServer} from 'selenium-webdriver/remote';
|
|
6
|
-
|
|
7
|
-
function getOptsData(opts: {[k: string]: any} = {}) {
|
|
8
|
-
const defaultConfig = standAloneDefaultConfig();
|
|
9
|
-
|
|
10
|
-
if (!opts.version) {
|
|
11
|
-
opts.version = defaultConfig.version;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
if (opts.drivers) {
|
|
15
|
-
opts.drivers = Object.keys(opts.drivers).reduce((config, driverName) => {
|
|
16
|
-
config[driverName] = Object.assign({}, defaultConfig.drivers[driverName], opts.drivers[driverName]);
|
|
17
|
-
return config;
|
|
18
|
-
}, {});
|
|
19
|
-
} else {
|
|
20
|
-
opts.drivers = defaultConfig.drivers;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
const fsPaths = computeFsPaths({
|
|
24
|
-
seleniumVersion: opts.version,
|
|
25
|
-
drivers: opts.drivers,
|
|
26
|
-
basePath: opts.basePath,
|
|
27
|
-
});
|
|
28
|
-
return fsPaths;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const throwInstructionError = (additional = '') => {
|
|
32
|
-
throw new Error(`${additional}Run 'selenium-standalone install' to download browser drivers and selenium standalone server.`);
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
const checkIfUpdateRequired = (driverName, opts) => {
|
|
36
|
-
if (driverName === 'selenium') {
|
|
37
|
-
if (!fs.existsSync(getOptsData(opts).selenium.installPath)) {
|
|
38
|
-
throwInstructionError();
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if (driverName === 'chrome') {
|
|
43
|
-
if (!fs.existsSync(getOptsData(opts).chrome.installPath)) {
|
|
44
|
-
throwInstructionError();
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (driverName === 'firefox') {
|
|
49
|
-
if (!fs.existsSync(getOptsData(opts).firefox.installPath)) {
|
|
50
|
-
throwInstructionError();
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
const checkIfDriverOrServerExists = (pathTo) => {
|
|
56
|
-
if (!fs.existsSync(pathTo)) {
|
|
57
|
-
throwInstructionError(`${pathTo} does not exists \n`);
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
|
|
61
|
-
const getCombinedConfig = (config: any = {}) => {
|
|
62
|
-
const combinedConfig = config;
|
|
63
|
-
|
|
64
|
-
if (!config.seleniumServerStartTimeout) {
|
|
65
|
-
config.seleniumServerStartTimeout = 30000;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
combinedConfig.capabilities =
|
|
69
|
-
combinedConfig.capabilities.map_ instanceof Map
|
|
70
|
-
? Object.fromEntries(combinedConfig.capabilities.map_)
|
|
71
|
-
: combinedConfig.capabilities;
|
|
72
|
-
|
|
73
|
-
if (!combinedConfig.seleniumServerJar) {
|
|
74
|
-
checkIfUpdateRequired('selenium', config.selenium);
|
|
75
|
-
const pathToServer = getOptsData(config.selenium).selenium.installPath;
|
|
76
|
-
|
|
77
|
-
checkIfDriverOrServerExists(pathToServer);
|
|
78
|
-
combinedConfig.seleniumServerJar = pathToServer;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
if (!combinedConfig.chromeDriver && combinedConfig.capabilities.browserName === 'chrome') {
|
|
82
|
-
checkIfUpdateRequired('chrome', config.selenium);
|
|
83
|
-
const pathToChromedriver = getOptsData(config.selenium).chrome.installPath;
|
|
84
|
-
|
|
85
|
-
checkIfDriverOrServerExists(pathToChromedriver);
|
|
86
|
-
combinedConfig.chromeDriver = pathToChromedriver;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
if (!combinedConfig.geckoDriver && combinedConfig.capabilities.browserName === 'firefox') {
|
|
90
|
-
checkIfUpdateRequired('firefox', config.selenium);
|
|
91
|
-
const pathTogeckoDriver = getOptsData(config.selenium).firefox.installPath;
|
|
92
|
-
|
|
93
|
-
checkIfDriverOrServerExists(pathTogeckoDriver);
|
|
94
|
-
combinedConfig.geckoDriver = pathTogeckoDriver;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return combinedConfig;
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
const runLocalEnv = async (config) => {
|
|
101
|
-
if (config.seleniumAddress) {
|
|
102
|
-
return config;
|
|
103
|
-
}
|
|
104
|
-
const combinedConfig = getCombinedConfig(config);
|
|
105
|
-
|
|
106
|
-
const serverConf = combinedConfig.localSeleniumStandaloneOpts || {};
|
|
107
|
-
|
|
108
|
-
if (!serverConf.args) {
|
|
109
|
-
serverConf.args = combinedConfig.seleniumArgs || [];
|
|
110
|
-
}
|
|
111
|
-
if (!serverConf.jvmArgs) {
|
|
112
|
-
serverConf.jvmArgs = combinedConfig.jvmArgs || [];
|
|
113
|
-
} else if (!Array.isArray(serverConf.jvmArgs)) {
|
|
114
|
-
throw new TypeError('jvmArgs should be an array.');
|
|
115
|
-
}
|
|
116
|
-
if (!serverConf.port) {
|
|
117
|
-
serverConf.port = combinedConfig.seleniumPort;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
if (combinedConfig.chromeDriver) {
|
|
121
|
-
serverConf.jvmArgs.push(`-Dwebdriver.chrome.driver=${combinedConfig.chromeDriver}`);
|
|
122
|
-
}
|
|
123
|
-
if (combinedConfig.geckoDriver) {
|
|
124
|
-
serverConf.jvmArgs.push(`-Dwebdriver.gecko.driver=${combinedConfig.geckoDriver}`);
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
const server = new SeleniumServer(combinedConfig.seleniumServerJar, serverConf);
|
|
128
|
-
|
|
129
|
-
await server.start(combinedConfig.seleniumServerStartTimeout);
|
|
130
|
-
|
|
131
|
-
const address = await server.address();
|
|
132
|
-
|
|
133
|
-
return {
|
|
134
|
-
server,
|
|
135
|
-
seleniumAddress: address,
|
|
136
|
-
capabilities: combinedConfig.capabilities,
|
|
137
|
-
};
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
export {
|
|
141
|
-
runLocalEnv,
|
|
142
|
-
};
|
package/lib/swd/driver/remote.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import {Builder, Capabilities, WebDriver} from 'selenium-webdriver';
|
|
2
|
-
import * as _http from 'selenium-webdriver/http';
|
|
3
|
-
|
|
4
|
-
import {runLocalEnv} from './local';
|
|
5
|
-
|
|
6
|
-
const getDriver = async (config) => {
|
|
7
|
-
const combinedConfig = config || {capabilities: Capabilities.chrome()};
|
|
8
|
-
if (!combinedConfig.capabilities) {
|
|
9
|
-
combinedConfig.capabilities = Capabilities.chrome();
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
if (config.seleniumSessionId) {
|
|
13
|
-
return await new WebDriver(
|
|
14
|
-
config.seleniumSessionId,
|
|
15
|
-
new _http.Executor(Promise.resolve(config.seleniumAddress)
|
|
16
|
-
.then((url) => new _http.HttpClient(url, null, null)))
|
|
17
|
-
);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
const {
|
|
21
|
-
seleniumAddress,
|
|
22
|
-
capabilities = Capabilities.chrome(),
|
|
23
|
-
} = await runLocalEnv(combinedConfig);
|
|
24
|
-
|
|
25
|
-
const driver = new Builder()
|
|
26
|
-
.usingServer(seleniumAddress)
|
|
27
|
-
.withCapabilities(capabilities)
|
|
28
|
-
.build();
|
|
29
|
-
|
|
30
|
-
return driver;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
export {
|
|
34
|
-
getDriver,
|
|
35
|
-
};
|
package/lib/swd/index.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import {getSeleniumDriver} from './driver';
|
|
2
|
-
import {$, $$, PromodSeleniumElement, PromodSeleniumElements, By} from './swd_element';
|
|
3
|
-
import {browser} from './swd_client';
|
|
4
|
-
|
|
5
|
-
const seleniumWD = {
|
|
6
|
-
getSeleniumDriver,
|
|
7
|
-
browser,
|
|
8
|
-
$,
|
|
9
|
-
$$,
|
|
10
|
-
By,
|
|
11
|
-
PromodSeleniumElement,
|
|
12
|
-
PromodSeleniumElements,
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
export {
|
|
16
|
-
seleniumWD,
|
|
17
|
-
};
|
package/lib/swd/swd_client.ts
DELETED
|
@@ -1,351 +0,0 @@
|
|
|
1
|
-
import {isArray, isPromise, waitForCondition, isNumber, isAsyncFunction, isString} from 'sat-utils';
|
|
2
|
-
import {WebDriver, Key} from 'selenium-webdriver';
|
|
3
|
-
|
|
4
|
-
function validateBrowserCallMethod(browserClass): Browser {
|
|
5
|
-
const protKeys = Object.getOwnPropertyNames(browserClass.prototype).filter((item) => item !== 'constructor');
|
|
6
|
-
for (const key of protKeys) {
|
|
7
|
-
const descriptor = Object.getOwnPropertyDescriptor(browserClass.prototype, key);
|
|
8
|
-
if (isAsyncFunction(descriptor.value)) {
|
|
9
|
-
const originalMethod: (...args: any[]) => Promise<any> = descriptor.value;
|
|
10
|
-
|
|
11
|
-
// eslint-disable-next-line no-inner-declarations
|
|
12
|
-
async function decoratedWithChecker(...args) {
|
|
13
|
-
if (!this.seleniumDriver) {
|
|
14
|
-
throw new Error(`
|
|
15
|
-
${key}(): Seems like driver was not initialized, please check how or where did you call getSeleniumDriver function
|
|
16
|
-
or visit https://github.com/Simple-Automation-Testing/promod/blob/master/docs/init.md#getseleniumdriver
|
|
17
|
-
`);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
return originalMethod.call(this, ...args);
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
Object.defineProperty(decoratedWithChecker, 'name', {value: key});
|
|
24
|
-
|
|
25
|
-
descriptor.value = decoratedWithChecker;
|
|
26
|
-
Object.defineProperty(browserClass.prototype, key, descriptor);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
return new browserClass();
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
interface IBrowserTab {
|
|
34
|
-
index?: number;
|
|
35
|
-
expectedQuantity?: number;
|
|
36
|
-
title?: string;
|
|
37
|
-
timeout?: number;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
class Browser {
|
|
41
|
-
public wait = waitForCondition;
|
|
42
|
-
public seleniumDriver: WebDriver;
|
|
43
|
-
private appBaseUrl: string;
|
|
44
|
-
private initialTab: any;
|
|
45
|
-
private drivers: WebDriver[];
|
|
46
|
-
private _createNewDriver: () => Promise<WebDriver>;
|
|
47
|
-
|
|
48
|
-
constructor() {
|
|
49
|
-
this.wait = waitForCondition;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
currentClient() {
|
|
53
|
-
return this.seleniumDriver;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
async runNewBrowser() {
|
|
57
|
-
if (!isArray(this.drivers)) {
|
|
58
|
-
this.drivers = [];
|
|
59
|
-
}
|
|
60
|
-
this.drivers.push(this.seleniumDriver);
|
|
61
|
-
if (!this._createNewDriver) {
|
|
62
|
-
throw new Error('createNewDriver(): seems like create driver method was not inited');
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
const newDriver = await this._createNewDriver();
|
|
66
|
-
this.drivers.push(newDriver);
|
|
67
|
-
this.seleniumDriver = newDriver;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
async switchToBrowser({index, tabTitle}: {index?: number; tabTitle?: string;} = {}) {
|
|
71
|
-
if (isNumber(index) && isArray(this.drivers) && this.drivers.length > index) {
|
|
72
|
-
this.seleniumDriver = this.drivers[index];
|
|
73
|
-
return;
|
|
74
|
-
} if (isString(tabTitle)) {
|
|
75
|
-
for (const driver of this.drivers) {
|
|
76
|
-
const result = await this.switchToBrowserTab({title: tabTitle}).then(() => true, () => false).catch(() => false);
|
|
77
|
-
if (result) {
|
|
78
|
-
this.seleniumDriver = driver;
|
|
79
|
-
return;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
throw new Error(`switchToBrowser(): required browser was not found`);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
set setCreateNewDriver(driverCreator) {
|
|
88
|
-
this._createNewDriver = driverCreator;
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
setClient(client) {
|
|
92
|
-
this.seleniumDriver = client;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
get Key() {
|
|
97
|
-
return Key;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
get baseUrl() {
|
|
101
|
-
return this.appBaseUrl;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
set baseUrl(url) {
|
|
105
|
-
this.appBaseUrl = url;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
public async returnToInitialTab() {
|
|
109
|
-
// there was no switching in test
|
|
110
|
-
if (!this.initialTab) {
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
await this.closeAllTabsExceptInitial();
|
|
114
|
-
await this.switchTo().window(this.initialTab);
|
|
115
|
-
// set initialTab to null for further "it" to use
|
|
116
|
-
this.initialTab = null;
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
public async switchToTab(tabObject: IBrowserTab) {
|
|
120
|
-
if (!this.initialTab) {
|
|
121
|
-
this.initialTab = await this.getCurrentTab();
|
|
122
|
-
}
|
|
123
|
-
await this.switchToBrowserTab(tabObject);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
private async closeAllTabsExceptInitial() {
|
|
127
|
-
const handles = await this.getTabs();
|
|
128
|
-
handles.splice(handles.indexOf(this.initialTab), 1);
|
|
129
|
-
await this.makeActionAtEveryTab(async () => this.close(), handles);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
public async makeActionAtEveryTab(action: (...args: any) => Promise<any>, handles?: string[]) {
|
|
133
|
-
handles = handles || await this.getTabs();
|
|
134
|
-
for (const windowHandle of handles) {
|
|
135
|
-
await this.switchTo().window(windowHandle);
|
|
136
|
-
await action();
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* switchToBrowserTab
|
|
142
|
-
* @private
|
|
143
|
-
*/
|
|
144
|
-
private async switchToBrowserTab(tabObject: IBrowserTab) {
|
|
145
|
-
const {index, expectedQuantity, title, timeout = 5000} = tabObject;
|
|
146
|
-
let tabs = await this.getTabs();
|
|
147
|
-
if (isNumber(expectedQuantity)) {
|
|
148
|
-
await waitForCondition(async () => {
|
|
149
|
-
tabs = await this.getTabs();
|
|
150
|
-
return tabs.length === expectedQuantity;
|
|
151
|
-
},
|
|
152
|
-
{message: `Couldn't wait for ${expectedQuantity} tab(s) to appear. Probably you should pass expectedQuantity`, timeout}
|
|
153
|
-
);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
if (tabs.length > 1) {
|
|
157
|
-
if (title) {
|
|
158
|
-
await waitForCondition(async () => {
|
|
159
|
-
tabs = await this.getTabs();
|
|
160
|
-
for (const tab of tabs) {
|
|
161
|
-
await this.switchTo().window(tab);
|
|
162
|
-
if (await this.getTitle() === title) {
|
|
163
|
-
return true;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
}, {message: `Window with ${title} title was not found during ${timeout}.`, timeout});
|
|
167
|
-
} else {
|
|
168
|
-
await this.switchTo().window(tabs[index]);
|
|
169
|
-
}
|
|
170
|
-
} else {
|
|
171
|
-
await this.switchTo().window(tabs[0]);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
async getTitle() {
|
|
176
|
-
return await this.seleniumDriver.getTitle();
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
async getCurrentUrl() {
|
|
180
|
-
return await this.seleniumDriver.getCurrentUrl();
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
async takeScreenshot() {
|
|
184
|
-
return await this.seleniumDriver.takeScreenshot();
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
async refresh() {
|
|
188
|
-
return await this.seleniumDriver.navigate().refresh();
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
async tabTitle() {
|
|
192
|
-
return await this.seleniumDriver.getTitle();
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
async getTabs() {
|
|
196
|
-
return await this.seleniumDriver.getAllWindowHandles();
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
async getCurrentTab() {
|
|
200
|
-
return await this.seleniumDriver.getWindowHandle();
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
async get(url: string) {
|
|
204
|
-
const getUrl = this.resolveUrl(url);
|
|
205
|
-
|
|
206
|
-
return await this.seleniumDriver.get(getUrl);
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
async setWindowSize(width: number, height: number) {
|
|
210
|
-
return await this.seleniumDriver.manage().window()
|
|
211
|
-
.setRect({
|
|
212
|
-
width,
|
|
213
|
-
height,
|
|
214
|
-
});
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
async sleep(time: number) {
|
|
218
|
-
await (() => new Promise((resolve) => setTimeout(resolve, time)))();
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
manage() {
|
|
222
|
-
return this.seleniumDriver.manage();
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
async executeScript(script: any, ...args: any[]): Promise<any> {
|
|
226
|
-
const recomposedArgs = await this.toSeleniumArgs(...args);
|
|
227
|
-
const res = await this.seleniumDriver.executeScript(script, ...recomposedArgs);
|
|
228
|
-
|
|
229
|
-
return res;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
async executeAsyncScript(script: any, ...args: any[]): Promise<any> {
|
|
233
|
-
const recomposedArgs = await this.toSeleniumArgs(...args);
|
|
234
|
-
|
|
235
|
-
const res = await this.seleniumDriver.executeAsyncScript(script, ...recomposedArgs);
|
|
236
|
-
|
|
237
|
-
return res;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
navigate() {
|
|
241
|
-
return this.seleniumDriver.navigate();
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
switchTo() {
|
|
245
|
-
return this.seleniumDriver.switchTo();
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
private async toSeleniumArgs(...args) {
|
|
249
|
-
const executeScriptArgs = [];
|
|
250
|
-
|
|
251
|
-
for (const item of args) {
|
|
252
|
-
const resolvedItem = isPromise(item) ? await item : item;
|
|
253
|
-
|
|
254
|
-
if (Array.isArray(resolvedItem)) {
|
|
255
|
-
const arrayItems = [];
|
|
256
|
-
|
|
257
|
-
for (const itemArr of resolvedItem) {
|
|
258
|
-
if (item && item.getId) {
|
|
259
|
-
const elementObj = await this.getSeleniumProtocolElement(itemArr);
|
|
260
|
-
|
|
261
|
-
arrayItems.push(elementObj);
|
|
262
|
-
} else {
|
|
263
|
-
arrayItems.push(itemArr);
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
executeScriptArgs.push(arrayItems);
|
|
267
|
-
} else if (resolvedItem && resolvedItem.getSeleniumProtocolElementObj) {
|
|
268
|
-
executeScriptArgs.push(await resolvedItem.getSeleniumProtocolElementObj());
|
|
269
|
-
} else {
|
|
270
|
-
executeScriptArgs.push(item);
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
return executeScriptArgs;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
async quit() {
|
|
278
|
-
await this.seleniumDriver.quit();
|
|
279
|
-
this.seleniumDriver = null;
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
async quitAll() {
|
|
283
|
-
if (isArray(this.drivers) && this.drivers.length) {
|
|
284
|
-
for (const driver of this.drivers) {
|
|
285
|
-
if (this.seleniumDriver === driver) {
|
|
286
|
-
this.seleniumDriver = null;
|
|
287
|
-
}
|
|
288
|
-
await driver.quit();
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
this.drivers = [];
|
|
292
|
-
if (this.seleniumDriver) {
|
|
293
|
-
await this.seleniumDriver.quit();
|
|
294
|
-
this.seleniumDriver = null;
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
async close() {
|
|
299
|
-
if (this.drivers.length) {
|
|
300
|
-
const index = this.drivers.findIndex((driver) => driver === this.seleniumDriver);
|
|
301
|
-
if (index !== -1) this.drivers.splice(index, 1);
|
|
302
|
-
}
|
|
303
|
-
await this.seleniumDriver.close();
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
actions() {
|
|
307
|
-
return this.seleniumDriver.actions({async: true});
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
private async getSeleniumProtocolElement(item) {
|
|
311
|
-
const webElId = await item.getId();
|
|
312
|
-
const elementObj = {
|
|
313
|
-
'element-6066-11e4-a52e-4f735466cecf': webElId,
|
|
314
|
-
ELEMENT: webElId,
|
|
315
|
-
};
|
|
316
|
-
|
|
317
|
-
return elementObj;
|
|
318
|
-
}
|
|
319
|
-
|
|
320
|
-
private resolveUrl(urlOrPath: string) {
|
|
321
|
-
let resolved;
|
|
322
|
-
|
|
323
|
-
if (!urlOrPath.includes('http') && this.appBaseUrl) {
|
|
324
|
-
const url = this.appBaseUrl;
|
|
325
|
-
const path = urlOrPath;
|
|
326
|
-
|
|
327
|
-
if (url.endsWith('/') && path.startsWith('/')) {
|
|
328
|
-
resolved = `${url.replace(/.$/u, '')}${path}`;
|
|
329
|
-
} else if (url.endsWith('/') && !path.startsWith('/')) {
|
|
330
|
-
resolved = `${url}${path}`;
|
|
331
|
-
} else if (!url.endsWith('/') && path.startsWith('/')) {
|
|
332
|
-
resolved = `${url}${path}`;
|
|
333
|
-
} else {
|
|
334
|
-
resolved = `${url}/${path}`;
|
|
335
|
-
}
|
|
336
|
-
} else if (urlOrPath === '' || urlOrPath === '/') {
|
|
337
|
-
return this.baseUrl;
|
|
338
|
-
} else {
|
|
339
|
-
resolved = urlOrPath;
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
return resolved;
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
const browser = validateBrowserCallMethod(Browser);
|
|
347
|
-
|
|
348
|
-
export {
|
|
349
|
-
browser,
|
|
350
|
-
Browser,
|
|
351
|
-
};
|
package/lib/swd/swd_element.ts
DELETED
|
@@ -1,397 +0,0 @@
|
|
|
1
|
-
/* eslint-disable max-len */
|
|
2
|
-
import {isBoolean, isString, isFunction, isPromise} from 'sat-utils';
|
|
3
|
-
import {By, WebElement, WebDriver} from 'selenium-webdriver';
|
|
4
|
-
import {browser} from './swd_client';
|
|
5
|
-
|
|
6
|
-
function toSeleniumProtocolElement(webElId) {
|
|
7
|
-
const elementObj = {
|
|
8
|
-
'element-6066-11e4-a52e-4f735466cecf': webElId,
|
|
9
|
-
ELEMENT: webElId,
|
|
10
|
-
};
|
|
11
|
-
return elementObj;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
const buildBy = (selector: string | By, getExecuteScriptArgs?: () => any[]): any => {
|
|
15
|
-
if (selector instanceof By) {
|
|
16
|
-
return selector;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
getExecuteScriptArgs = isFunction(getExecuteScriptArgs) ? getExecuteScriptArgs : () => ([]);
|
|
20
|
-
|
|
21
|
-
if (isString(selector) && (selector as string).includes('xpath=')) {
|
|
22
|
-
return By.xpath((selector as string).replace('xpath=', ''));
|
|
23
|
-
} else if (isString(selector) && (selector as string).includes('js=')) {
|
|
24
|
-
return By.js((selector as string).replace('js=', ''), ...getExecuteScriptArgs());
|
|
25
|
-
} else if (isPromise(selector)) {
|
|
26
|
-
return selector;
|
|
27
|
-
} else if (isFunction(selector)) {
|
|
28
|
-
return By.js(selector, ...getExecuteScriptArgs());
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
return By.css(selector);
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
const SELENIUM_API_METHODS = [
|
|
35
|
-
'sendKeys', 'getTagName', 'getCssValue', 'getAttribute', 'getText', 'getRect',
|
|
36
|
-
'isEnabled', 'isSelected', 'submit', 'clear', 'getId', 'takeScreenshot', 'getLocation',
|
|
37
|
-
];
|
|
38
|
-
|
|
39
|
-
class PromodSeleniumElements {
|
|
40
|
-
private seleniumDriver: WebDriver;
|
|
41
|
-
private selector: string;
|
|
42
|
-
private wdElements: WebElement[];
|
|
43
|
-
private getParent: () => Promise<PromodSeleniumElement & WebElement>;
|
|
44
|
-
private getExecuteScriptArgs: () => any;
|
|
45
|
-
public parentSelector: string;
|
|
46
|
-
|
|
47
|
-
constructor(selector, client, getParent?, getExecuteScriptArgs?) {
|
|
48
|
-
this.seleniumDriver = client;
|
|
49
|
-
this.selector = selector;
|
|
50
|
-
this.getParent = getParent;
|
|
51
|
-
this.getExecuteScriptArgs = getExecuteScriptArgs;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
setseleniumDriver(client: WebDriver) {
|
|
55
|
-
this.seleniumDriver = client;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
get(index): PromodSeleniumElementType {
|
|
59
|
-
const childElement = new PromodSeleniumElement(this.selector, this.seleniumDriver, this.getElement.bind(this, index), null, true);
|
|
60
|
-
if (this.parentSelector) {
|
|
61
|
-
childElement.parentSelector = this.parentSelector || this.selector;
|
|
62
|
-
}
|
|
63
|
-
return childElement as any;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
last(): PromodSeleniumElementType {
|
|
67
|
-
return this.get(-1) as any;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
first(): PromodSeleniumElementType {
|
|
71
|
-
return this.get(0) as any;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
private async getElement(index?) {
|
|
75
|
-
this.seleniumDriver = browser.currentClient();
|
|
76
|
-
|
|
77
|
-
if (this.getParent) {
|
|
78
|
-
let parent = await this.getParent();
|
|
79
|
-
|
|
80
|
-
if (parent.getWebDriverElement) {
|
|
81
|
-
// @ts-ignore
|
|
82
|
-
parent = await parent.getWebDriverElement();
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
this.wdElements = await parent.findElements(buildBy(this.selector, this.getExecuteScriptArgs));
|
|
86
|
-
} else {
|
|
87
|
-
this.wdElements = await this.seleniumDriver.findElements(buildBy(this.selector, this.getExecuteScriptArgs));
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
if (index === -1) {
|
|
91
|
-
return this.wdElements[this.wdElements.length - 1];
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
return this.wdElements[index];
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
async getIds() {
|
|
98
|
-
await this.getElement();
|
|
99
|
-
// @ts-ignore
|
|
100
|
-
return this.wdElements.map((item) => item.id_);
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
async getSeleniumProtocolElementObj() {
|
|
104
|
-
const ids = await this.getIds();
|
|
105
|
-
|
|
106
|
-
return ids.map(toSeleniumProtocolElement);
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
async each(cb: (item: PromodSeleniumElementType, index?: number) => Promise<void>): Promise<any> {
|
|
111
|
-
await this.getElement(0);
|
|
112
|
-
|
|
113
|
-
for (let i = 0; i < this.wdElements.length; i++) {
|
|
114
|
-
await cb(new PromodSeleniumElement(this.selector, this.seleniumDriver, () => this.wdElements[i], null, true) as any, i);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
async count(): Promise<number> {
|
|
119
|
-
await this.getElement(0);
|
|
120
|
-
return this.wdElements.length;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
class PromodSeleniumElement {
|
|
125
|
-
private seleniumDriver: WebDriver;
|
|
126
|
-
private selector: string;
|
|
127
|
-
private wdElement: WebElement;
|
|
128
|
-
private getParent: () => Promise<PromodSeleniumElementType>;
|
|
129
|
-
private getExecuteScriptArgs: () => any;
|
|
130
|
-
private useParent: boolean;
|
|
131
|
-
public parentSelector: string;
|
|
132
|
-
|
|
133
|
-
constructor(selector, client, getParent?, getExecuteScriptArgs?, useParent?) {
|
|
134
|
-
this.seleniumDriver = client;
|
|
135
|
-
this.selector = selector;
|
|
136
|
-
this.getParent = getParent;
|
|
137
|
-
this.getExecuteScriptArgs = getExecuteScriptArgs;
|
|
138
|
-
this.useParent = useParent;
|
|
139
|
-
|
|
140
|
-
const self = this;
|
|
141
|
-
|
|
142
|
-
SELENIUM_API_METHODS.forEach(function(methodName) {
|
|
143
|
-
self[methodName] = (...args: any[]) => {
|
|
144
|
-
const action = () => self.wdElement[methodName].call(self.wdElement, ...args);
|
|
145
|
-
|
|
146
|
-
return self.callElementAction(action);
|
|
147
|
-
};
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
setseleniumDriver(client) {
|
|
152
|
-
this.seleniumDriver = client;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
$(selector): PromodSeleniumElementType {
|
|
156
|
-
const childElement = new PromodSeleniumElement(selector, this.seleniumDriver, this.getElement.bind(this));
|
|
157
|
-
childElement.parentSelector = this.selector;
|
|
158
|
-
return childElement as any;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
$$(selector): PromodSeleniumElementsType {
|
|
162
|
-
const childElements = new PromodSeleniumElements(selector, this.seleniumDriver, this.getElement.bind(this));
|
|
163
|
-
childElements.parentSelector = this.selector;
|
|
164
|
-
return childElements as any;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
async getSeleniumProtocolElementObj() {
|
|
168
|
-
const id = await this.getId();
|
|
169
|
-
|
|
170
|
-
return toSeleniumProtocolElement(id);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* @param {boolean} [withScroll] try to prevent intercept error by scoll to bottom/to
|
|
175
|
-
* @returns {Promise<void>}
|
|
176
|
-
*/
|
|
177
|
-
async click(withScroll?: boolean) {
|
|
178
|
-
await this.getElement();
|
|
179
|
-
if (withScroll) {
|
|
180
|
-
const scrollableClickResult = await this.wdElement.click()
|
|
181
|
-
.catch((err) => (this.isInteractionIntercepted(err) ? this.scrollIntoView('end').then(() => this.wdElement.click()) : err))
|
|
182
|
-
.catch((err) => (this.isInteractionIntercepted(err) ? this.scrollIntoView('start').then(() => this.wdElement.click()) : err))
|
|
183
|
-
.then((err) => err)
|
|
184
|
-
.catch((err) => err);
|
|
185
|
-
|
|
186
|
-
if (scrollableClickResult) {
|
|
187
|
-
throw scrollableClickResult;
|
|
188
|
-
}
|
|
189
|
-
} else {
|
|
190
|
-
return this.wdElement.click();
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
async scrollIntoView(position?: 'end' | 'start') {
|
|
195
|
-
await this.getElement();
|
|
196
|
-
await this.seleniumDriver.executeScript(`
|
|
197
|
-
let position = true;
|
|
198
|
-
if(arguments[1] ==='end') {
|
|
199
|
-
position = {block: 'end'}
|
|
200
|
-
} else if(arguments[1] ==='start') {
|
|
201
|
-
position = {block: 'start'}
|
|
202
|
-
}
|
|
203
|
-
arguments[0].scrollIntoView(position)
|
|
204
|
-
`, this.getWebDriverElement(), position);
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
async getElement() {
|
|
208
|
-
this.seleniumDriver = browser.currentClient();
|
|
209
|
-
if (this.getParent) {
|
|
210
|
-
let parent = await this.getParent() as any;
|
|
211
|
-
if (!parent) {
|
|
212
|
-
throw new Error(
|
|
213
|
-
this.useParent
|
|
214
|
-
? `Any element with selector ${this.selector} was not found`
|
|
215
|
-
: `Parent element with selector ${this.parentSelector} was not found`
|
|
216
|
-
);
|
|
217
|
-
}
|
|
218
|
-
if (parent.getWebDriverElement) {
|
|
219
|
-
parent = await parent.getWebDriverElement();
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
if (this.useParent) {
|
|
223
|
-
this.wdElement = parent;
|
|
224
|
-
} else {
|
|
225
|
-
this.wdElement = await parent.findElement(buildBy(this.selector, this.getExecuteScriptArgs));
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
} else {
|
|
229
|
-
this.wdElement = await this.seleniumDriver.findElement(buildBy(this.selector, this.getExecuteScriptArgs));
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
return this.wdElement;
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
/**
|
|
236
|
-
* @returns {Promise<boolean>} button is present
|
|
237
|
-
* @example
|
|
238
|
-
* const button = $('button')
|
|
239
|
-
* const buttonIsDisplayed = await button.isDisplayed();
|
|
240
|
-
*/
|
|
241
|
-
async isDisplayed() {
|
|
242
|
-
const result = await this.getElement().catch(() => false);
|
|
243
|
-
if (isBoolean(result) && !result) {
|
|
244
|
-
return false;
|
|
245
|
-
}
|
|
246
|
-
return this.wdElement.isDisplayed().then((res) => res, () => false);
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
/**
|
|
250
|
-
* @returns {Promise<boolean>} button is present
|
|
251
|
-
* @example
|
|
252
|
-
* const button = $('button')
|
|
253
|
-
* const buttonIsPresent = await button.isPresent();
|
|
254
|
-
*/
|
|
255
|
-
async isPresent() {
|
|
256
|
-
return this.getElement().then(() => true).catch((r) => false);
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
private async callElementAction(action) {
|
|
260
|
-
await this.getElement();
|
|
261
|
-
|
|
262
|
-
return action();
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
async getId() {
|
|
266
|
-
await this.getElement();
|
|
267
|
-
// @ts-ignore
|
|
268
|
-
return this.wdElement.id_;
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
async getWebDriverElement() {
|
|
272
|
-
await this.getElement();
|
|
273
|
-
|
|
274
|
-
return this.wdElement;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
locator() {
|
|
278
|
-
let locatorValue = '';
|
|
279
|
-
if (this.parentSelector) {
|
|
280
|
-
locatorValue += ` Parent: ${this.parentSelector} `;
|
|
281
|
-
}
|
|
282
|
-
return {value: `${locatorValue}${this.selector}`};
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
private isInteractionIntercepted(err) {
|
|
286
|
-
return err.toString().includes('element click intercepted');
|
|
287
|
-
}
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
function getInitElementRest(selector: string | By | ((...args: any[]) => any) | Promise<any>, root?: PromodSeleniumElementType, ...rest: any[]) {
|
|
292
|
-
let getParent = null;
|
|
293
|
-
let getExecuteScriptArgs = null;
|
|
294
|
-
|
|
295
|
-
/**
|
|
296
|
-
* @info
|
|
297
|
-
* in case if selector is string with "js=" marker or selector is a function
|
|
298
|
-
*/
|
|
299
|
-
|
|
300
|
-
if ((isString(selector) && (selector as string).indexOf('js=') === 0) || isFunction(selector) || isPromise(selector)) {
|
|
301
|
-
getExecuteScriptArgs = function getExecuteScriptArgs() {
|
|
302
|
-
return [root, ...rest];
|
|
303
|
-
};
|
|
304
|
-
} else if (root && root instanceof PromodSeleniumElement) {
|
|
305
|
-
getParent = function getParent() {
|
|
306
|
-
return root;
|
|
307
|
-
};
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
return [getParent, getExecuteScriptArgs];
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
const $ = (selector: string | By | ((...args: any[]) => any) | Promise<any>, root?: PromodSeleniumElementType | any, ...rest: any[]): PromodSeleniumElementType => {
|
|
314
|
-
const restArgs = getInitElementRest(selector, root, ...rest);
|
|
315
|
-
|
|
316
|
-
return new PromodSeleniumElement(selector, null, ...restArgs) as any;
|
|
317
|
-
};
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
const $$ = (selector: string | By | ((...args: any[]) => any) | Promise<any>, root?: PromodSeleniumElementType | any, ...rest: any[]): PromodSeleniumElementsType => {
|
|
321
|
-
const restArgs = getInitElementRest(selector, root, ...rest);
|
|
322
|
-
|
|
323
|
-
return new PromodSeleniumElements(selector, null, ...restArgs) as any;
|
|
324
|
-
};
|
|
325
|
-
|
|
326
|
-
export {$, $$, PromodSeleniumElement, PromodSeleniumElements, By};
|
|
327
|
-
|
|
328
|
-
export interface PromodSeleniumElementsType {
|
|
329
|
-
wdElements: WebElement[];
|
|
330
|
-
|
|
331
|
-
get(index: number): PromodSeleniumElementType;
|
|
332
|
-
|
|
333
|
-
last(): PromodSeleniumElementType;
|
|
334
|
-
|
|
335
|
-
first(): PromodSeleniumElementType;
|
|
336
|
-
|
|
337
|
-
each(cb: (item: PromodSeleniumElementType, index?: number) => Promise<void>): Promise<void>;
|
|
338
|
-
|
|
339
|
-
count(): Promise<number>;
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
export interface PromodSeleniumElementType {
|
|
343
|
-
|
|
344
|
-
wdElement: WebElement;
|
|
345
|
-
|
|
346
|
-
getId(): Promise<string>;
|
|
347
|
-
|
|
348
|
-
click(withScroll?: boolean): Promise<void>;
|
|
349
|
-
|
|
350
|
-
sendKeys(...keys: Array<string | number | Promise<string | number>>): Promise<void>;
|
|
351
|
-
|
|
352
|
-
getTagName(): Promise<string>;
|
|
353
|
-
|
|
354
|
-
getCssValue(cssStyleProperty: string): Promise<string>;
|
|
355
|
-
|
|
356
|
-
getAttribute(attributeName: string): Promise<string>;
|
|
357
|
-
|
|
358
|
-
getText(): Promise<string>;
|
|
359
|
-
|
|
360
|
-
getSize(): Promise<{
|
|
361
|
-
width: number;
|
|
362
|
-
height: number;
|
|
363
|
-
}>;
|
|
364
|
-
|
|
365
|
-
getRect(): Promise<{
|
|
366
|
-
x: number;
|
|
367
|
-
y: number;
|
|
368
|
-
width: number;
|
|
369
|
-
height: number;
|
|
370
|
-
}>;
|
|
371
|
-
|
|
372
|
-
getLocation(): Promise<{
|
|
373
|
-
x: number;
|
|
374
|
-
y: number;
|
|
375
|
-
}>;
|
|
376
|
-
|
|
377
|
-
$(selector: string | By | ((...args: any[]) => any) | Promise<any>): PromodSeleniumElementType;
|
|
378
|
-
$$(selector: string | By | ((...args: any[]) => any) | Promise<any>): PromodSeleniumElementsType;
|
|
379
|
-
|
|
380
|
-
isEnabled(): Promise<boolean>;
|
|
381
|
-
|
|
382
|
-
isSelected(): Promise<boolean>;
|
|
383
|
-
|
|
384
|
-
isPresent(): Promise<boolean>;
|
|
385
|
-
|
|
386
|
-
submit(): Promise<void>;
|
|
387
|
-
|
|
388
|
-
clear(): Promise<void>;
|
|
389
|
-
|
|
390
|
-
isDisplayed(): Promise<boolean>;
|
|
391
|
-
|
|
392
|
-
takeScreenshot(opt_scroll?: boolean): Promise<string>;
|
|
393
|
-
|
|
394
|
-
getWebDriverElement(): Promise<WebElement>;
|
|
395
|
-
|
|
396
|
-
scrollIntoView(position?: boolean | string): Promise<void>;
|
|
397
|
-
}
|