@applitools/spec-driver-selenium 1.2.0 → 1.3.3
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/CHANGELOG.md +21 -0
- package/dist/spec-driver.js +67 -73
- package/package.json +13 -10
- package/types/index.d.ts +5 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,27 @@
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
5
|
|
|
6
|
+
## 1.3.3 - 2022/1/12
|
|
7
|
+
|
|
8
|
+
- add support of selenium 4 `ShadowRoot` objects
|
|
9
|
+
|
|
10
|
+
## 1.3.2 - 2022/1/12
|
|
11
|
+
|
|
12
|
+
- no changes
|
|
13
|
+
|
|
14
|
+
## 1.3.1 - 2022/1/12
|
|
15
|
+
|
|
16
|
+
- use chromedriver instead of selenium docker container for testing
|
|
17
|
+
- fix tests for selenium 3
|
|
18
|
+
- fix `getCapabilities` for selenium 3
|
|
19
|
+
- updated to @applitools/types@1.0.23 (from 1.0.20)
|
|
20
|
+
- updated to @applitools/utils@1.2.11 (from 1.2.4)
|
|
21
|
+
|
|
22
|
+
## 1.3.0 - 2021/11/17
|
|
23
|
+
|
|
24
|
+
- implement `getCapabilities` and `getBarsHeight` instead of `getDriverInfo`
|
|
25
|
+
- updated to @applitools/types@1.0.20 (from 1.0.19)
|
|
26
|
+
|
|
6
27
|
## 1.2.0 - 2021/11/10
|
|
7
28
|
|
|
8
29
|
- updated to @applitools/types@1.0.19 (from 1.0.15)
|
package/dist/spec-driver.js
CHANGED
|
@@ -30,12 +30,18 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
30
30
|
return t;
|
|
31
31
|
};
|
|
32
32
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
-
exports.build = exports.performAction = exports.getElementText = exports.getElementAttribute = exports.getElementRegion = exports.getOrientation = exports.waitUntilDisplayed = exports.scrollIntoView = exports.type = exports.hover = exports.click = exports.takeScreenshot = exports.visit = exports.getUrl = exports.getTitle = exports.getDriverInfo = exports.getCookies = exports.setWindowSize = exports.getWindowSize = exports.findElements = exports.findElement = exports.childContext = exports.parentContext = exports.mainContext = exports.executeScript = exports.isEqualElements = exports.isStaleElementError = exports.transformSelector = exports.transformDriver = exports.isSelector = exports.isElement = exports.isDriver = void 0;
|
|
33
|
+
exports.build = exports.performAction = exports.getElementText = exports.getElementAttribute = exports.getElementRegion = exports.getOrientation = exports.getBarsHeight = exports.waitUntilDisplayed = exports.scrollIntoView = exports.type = exports.hover = exports.click = exports.takeScreenshot = exports.visit = exports.getUrl = exports.getTitle = exports.getCapabilities = exports.getDriverInfo = exports.getCookies = exports.setWindowSize = exports.getWindowSize = exports.findElements = exports.findElement = exports.childContext = exports.parentContext = exports.mainContext = exports.executeScript = exports.isEqualElements = exports.isStaleElementError = exports.transformSelector = exports.transformDriver = exports.isSelector = exports.isElement = exports.isDriver = void 0;
|
|
34
|
+
const Selenium = __importStar(require("selenium-webdriver"));
|
|
34
35
|
const utils = __importStar(require("@applitools/utils"));
|
|
35
36
|
// #region HELPERS
|
|
36
37
|
const byHash = ['className', 'css', 'id', 'js', 'linkText', 'name', 'partialLinkText', 'tagName', 'xpath'];
|
|
37
38
|
function extractElementId(element) {
|
|
38
|
-
return element.getId();
|
|
39
|
+
return isElement(element) ? element.getId() : element['shadow-6066-11e4-a52e-4f735466cecf'];
|
|
40
|
+
}
|
|
41
|
+
function transformShadowRoot(driver, shadowRoot) {
|
|
42
|
+
return utils.types.has(shadowRoot, 'shadow-6066-11e4-a52e-4f735466cecf')
|
|
43
|
+
? new Selenium.WebElement(driver, shadowRoot['shadow-6066-11e4-a52e-4f735466cecf'])
|
|
44
|
+
: shadowRoot;
|
|
39
45
|
}
|
|
40
46
|
// #endregion
|
|
41
47
|
// #region UTILITY
|
|
@@ -57,6 +63,9 @@ function transformDriver(driver) {
|
|
|
57
63
|
driver.getExecutor().defineCommand('getSessionDetails', 'GET', '/session/:sessionId');
|
|
58
64
|
driver.getExecutor().defineCommand('getOrientation', 'GET', '/session/:sessionId/orientation');
|
|
59
65
|
driver.getExecutor().defineCommand('getSystemBars', 'GET', '/session/:sessionId/appium/device/system_bars');
|
|
66
|
+
driver.getExecutor().defineCommand('getWindowSize', 'GET', '/session/:sessionId/window/current/size');
|
|
67
|
+
driver.getExecutor().defineCommand('setWindowSize', 'POST', '/session/:sessionId/window/current/size');
|
|
68
|
+
driver.getExecutor().defineCommand('setWindowPosition', 'POST', '/session/:sessionId/window/current/position');
|
|
60
69
|
driver.getExecutor().defineCommand('performTouch', 'POST', '/session/:sessionId/touch/perform');
|
|
61
70
|
driver.getExecutor().defineCommand('executeCdp', 'POST', '/session/:sessionId/chromium/send_command_and_get_result');
|
|
62
71
|
if (process.env.APPLITOOLS_SELENIUM_MAJOR_VERSION === '3') {
|
|
@@ -125,7 +134,7 @@ async function childContext(driver, element) {
|
|
|
125
134
|
exports.childContext = childContext;
|
|
126
135
|
async function findElement(driver, selector, parent) {
|
|
127
136
|
try {
|
|
128
|
-
const root = parent
|
|
137
|
+
const root = parent ? transformShadowRoot(driver, parent) : driver;
|
|
129
138
|
return await root.findElement(selector);
|
|
130
139
|
}
|
|
131
140
|
catch (err) {
|
|
@@ -137,36 +146,41 @@ async function findElement(driver, selector, parent) {
|
|
|
137
146
|
}
|
|
138
147
|
exports.findElement = findElement;
|
|
139
148
|
async function findElements(driver, selector, parent) {
|
|
140
|
-
const root = parent
|
|
149
|
+
const root = parent ? transformShadowRoot(driver, parent) : driver;
|
|
141
150
|
return root.findElements(selector);
|
|
142
151
|
}
|
|
143
152
|
exports.findElements = findElements;
|
|
144
153
|
async function getWindowSize(driver) {
|
|
145
154
|
try {
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
-
return await window.getSize();
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
const rect = await window.getRect();
|
|
152
|
-
return { width: rect.width, height: rect.height };
|
|
153
|
-
}
|
|
155
|
+
const rect = await driver.manage().window().getRect();
|
|
156
|
+
return { width: rect.width, height: rect.height };
|
|
154
157
|
}
|
|
155
|
-
catch (
|
|
156
|
-
|
|
157
|
-
const
|
|
158
|
-
|
|
158
|
+
catch (_a) {
|
|
159
|
+
const { Command } = require('selenium-webdriver/lib/command');
|
|
160
|
+
const getWindowSizeCommand = new Command('getWindowSize');
|
|
161
|
+
const size = driver.manage().window().getSize
|
|
162
|
+
? await driver.manage().window().getSize()
|
|
163
|
+
: await driver.execute(getWindowSizeCommand);
|
|
164
|
+
return { width: size.width, height: size.height };
|
|
159
165
|
}
|
|
160
166
|
}
|
|
161
167
|
exports.getWindowSize = getWindowSize;
|
|
162
168
|
async function setWindowSize(driver, size) {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
await window.setRect({ x: 0, y: 0, width: size.width, height: size.height });
|
|
169
|
+
try {
|
|
170
|
+
await driver.manage().window().setRect({ x: 0, y: 0, width: size.width, height: size.height });
|
|
166
171
|
}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
172
|
+
catch (_a) {
|
|
173
|
+
const { Command } = require('selenium-webdriver/lib/command');
|
|
174
|
+
const setWindowPositionCommand = new Command('setWindowPosition').setParameters({ x: 0, y: 0 });
|
|
175
|
+
if (driver.manage().window().setPosition)
|
|
176
|
+
await driver.manage().window().setPosition(0, 0);
|
|
177
|
+
else
|
|
178
|
+
await driver.execute(setWindowPositionCommand);
|
|
179
|
+
const setWindowSizeCommand = new Command('setWindowSize').setParameters(Object.assign({}, size));
|
|
180
|
+
if (driver.manage().window().setSize)
|
|
181
|
+
await driver.manage().window().setSize(size.width, size.height);
|
|
182
|
+
else
|
|
183
|
+
await driver.execute(setWindowSizeCommand);
|
|
170
184
|
}
|
|
171
185
|
}
|
|
172
186
|
exports.setWindowSize = setWindowSize;
|
|
@@ -180,7 +194,9 @@ async function getCookies(driver, context) {
|
|
|
180
194
|
}
|
|
181
195
|
else {
|
|
182
196
|
const { Command } = require('selenium-webdriver/lib/command');
|
|
183
|
-
const executeCdpCommand = new Command('executeCdp')
|
|
197
|
+
const executeCdpCommand = new Command('executeCdp')
|
|
198
|
+
.setParameter('cmd', 'Network.getAllCookies')
|
|
199
|
+
.setParameter('params', {});
|
|
184
200
|
const response = process.env.APPLITOOLS_SELENIUM_MAJOR_VERSION === '3'
|
|
185
201
|
? await driver.schedule(executeCdpCommand)
|
|
186
202
|
: await driver.execute(executeCdpCommand);
|
|
@@ -200,56 +216,24 @@ async function getCookies(driver, context) {
|
|
|
200
216
|
}
|
|
201
217
|
exports.getCookies = getCookies;
|
|
202
218
|
async function getDriverInfo(driver) {
|
|
203
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
204
219
|
const session = await driver.getSession();
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
sessionId: session.getId(),
|
|
211
|
-
isMobile,
|
|
212
|
-
isNative: isMobile && !capabilities.get('browserName'),
|
|
213
|
-
deviceName: (_d = desiredCapabilities.deviceName) !== null && _d !== void 0 ? _d : capabilities.get('deviceName'),
|
|
214
|
-
platformName,
|
|
215
|
-
platformVersion: capabilities.get('platformVersion'),
|
|
216
|
-
browserName: (_e = capabilities.get('browserName')) !== null && _e !== void 0 ? _e : desiredCapabilities === null || desiredCapabilities === void 0 ? void 0 : desiredCapabilities.browserName,
|
|
217
|
-
browserVersion: (_f = capabilities.get('browserVersion')) !== null && _f !== void 0 ? _f : capabilities.get('version'),
|
|
218
|
-
};
|
|
219
|
-
if (info.isNative) {
|
|
220
|
+
return { sessionId: session.getId() };
|
|
221
|
+
}
|
|
222
|
+
exports.getDriverInfo = getDriverInfo;
|
|
223
|
+
async function getCapabilities(driver) {
|
|
224
|
+
try {
|
|
220
225
|
const { Command } = require('selenium-webdriver/lib/command');
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
const getSessionDetailsCommand = new Command('getSessionDetails');
|
|
231
|
-
details =
|
|
232
|
-
process.env.APPLITOOLS_SELENIUM_MAJOR_VERSION === '3'
|
|
233
|
-
? await driver.schedule(getSessionDetailsCommand)
|
|
234
|
-
: await driver.execute(getSessionDetailsCommand);
|
|
235
|
-
}
|
|
236
|
-
info.pixelRatio = details.pixelRatio;
|
|
237
|
-
try {
|
|
238
|
-
const getSystemBarsCommand = new Command('getSystemBars');
|
|
239
|
-
const { statusBar, navigationBar } = process.env.APPLITOOLS_SELENIUM_MAJOR_VERSION === '3'
|
|
240
|
-
? await driver.schedule(getSystemBarsCommand)
|
|
241
|
-
: await driver.execute(getSystemBarsCommand);
|
|
242
|
-
info.statusBarHeight = statusBar.visible ? statusBar.height : 0;
|
|
243
|
-
info.navigationBarHeight = navigationBar.visible ? navigationBar.height : 0;
|
|
244
|
-
}
|
|
245
|
-
catch (err) {
|
|
246
|
-
info.statusBarHeight = (_j = (_g = details.statBarHeight) !== null && _g !== void 0 ? _g : (_h = details.viewportRect) === null || _h === void 0 ? void 0 : _h.top) !== null && _j !== void 0 ? _j : 0;
|
|
247
|
-
info.navigationBarHeight = 0;
|
|
248
|
-
}
|
|
226
|
+
const getSessionDetailsCommand = new Command('getSessionDetails');
|
|
227
|
+
return process.env.APPLITOOLS_SELENIUM_MAJOR_VERSION === '3'
|
|
228
|
+
? await driver.schedule(getSessionDetailsCommand)
|
|
229
|
+
: await driver.execute(getSessionDetailsCommand);
|
|
230
|
+
}
|
|
231
|
+
catch (_a) {
|
|
232
|
+
const capabilities = await driver.getCapabilities();
|
|
233
|
+
return Array.from(capabilities.keys()).reduce((obj, key) => Object.assign(obj, { key: capabilities.get(key) }), {});
|
|
249
234
|
}
|
|
250
|
-
return info;
|
|
251
235
|
}
|
|
252
|
-
exports.
|
|
236
|
+
exports.getCapabilities = getCapabilities;
|
|
253
237
|
async function getTitle(driver) {
|
|
254
238
|
return driver.getTitle();
|
|
255
239
|
}
|
|
@@ -298,13 +282,24 @@ async function scrollIntoView(driver, element, align = false) {
|
|
|
298
282
|
}
|
|
299
283
|
exports.scrollIntoView = scrollIntoView;
|
|
300
284
|
async function waitUntilDisplayed(driver, selector, timeout) {
|
|
301
|
-
const { until } = require('selenium-webdriver');
|
|
302
285
|
const element = await findElement(driver, selector);
|
|
303
|
-
await driver.wait(until.elementIsVisible(element), timeout);
|
|
286
|
+
await driver.wait(Selenium.until.elementIsVisible(element), timeout);
|
|
304
287
|
}
|
|
305
288
|
exports.waitUntilDisplayed = waitUntilDisplayed;
|
|
306
289
|
// #endregion
|
|
307
290
|
// #region MOBILE COMMANDS
|
|
291
|
+
async function getBarsHeight(driver) {
|
|
292
|
+
const { Command } = require('selenium-webdriver/lib/command');
|
|
293
|
+
const getSystemBarsCommand = new Command('getSystemBars');
|
|
294
|
+
const { statusBar, navigationBar } = process.env.APPLITOOLS_SELENIUM_MAJOR_VERSION === '3'
|
|
295
|
+
? await driver.schedule(getSystemBarsCommand)
|
|
296
|
+
: await driver.execute(getSystemBarsCommand);
|
|
297
|
+
return {
|
|
298
|
+
statusBarHeight: statusBar.visible ? statusBar.height : 0,
|
|
299
|
+
navigationBarHeight: navigationBar.visible ? navigationBar.height : 0,
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
exports.getBarsHeight = getBarsHeight;
|
|
308
303
|
async function getOrientation(driver) {
|
|
309
304
|
const { Command } = require('selenium-webdriver/lib/command');
|
|
310
305
|
const getOrientationCommand = new Command('getOrientation');
|
|
@@ -357,7 +352,6 @@ const browserOptionsNames = {
|
|
|
357
352
|
};
|
|
358
353
|
async function build(env) {
|
|
359
354
|
var _a;
|
|
360
|
-
const { Builder } = require('selenium-webdriver');
|
|
361
355
|
const parseEnv = require('@applitools/test-utils/src/parse-env');
|
|
362
356
|
const { browser, capabilities, url, attach, proxy, configurable = true, appium = false, args = [], headless, } = parseEnv(Object.assign(Object.assign({}, env), { legacy: (_a = env.legacy) !== null && _a !== void 0 ? _a : process.env.APPLITOOLS_SELENIUM_MAJOR_VERSION === '3' }));
|
|
363
357
|
const desiredCapabilities = Object.assign({}, capabilities);
|
|
@@ -379,7 +373,7 @@ async function build(env) {
|
|
|
379
373
|
if (appium && browser === 'chrome') {
|
|
380
374
|
desiredCapabilities['appium:chromeOptions'] = { w3c: false };
|
|
381
375
|
}
|
|
382
|
-
const builder = new Builder().withCapabilities(desiredCapabilities);
|
|
376
|
+
const builder = new Selenium.Builder().withCapabilities(desiredCapabilities);
|
|
383
377
|
if (url && !attach)
|
|
384
378
|
builder.usingServer(url.href);
|
|
385
379
|
if (proxy) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applitools/spec-driver-selenium",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.3",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"selenium",
|
|
6
6
|
"selenium-webdriver",
|
|
@@ -41,9 +41,11 @@
|
|
|
41
41
|
"lint": "eslint '**/*.ts'",
|
|
42
42
|
"build": "ttsc",
|
|
43
43
|
"test": "mocha ./test/**/*.spec.ts --no-timeouts -r ts-node/register -r @applitools/test-utils/mocha-hooks/docker",
|
|
44
|
-
"setup": "yarn
|
|
44
|
+
"setup": "yarn chromedriver:setup",
|
|
45
|
+
"chromedriver:setup": "chromedriver --port=4444 --url-base=/wd/hub &",
|
|
45
46
|
"docker:setup": "node ../scripts/scripts/generate-docker-compose-config.js && docker-compose up -d",
|
|
46
47
|
"docker:teardown": "docker-compose down",
|
|
48
|
+
"upgrade:framework": "if [ ! -z $APPLITOOLS_SELENIUM_MAJOR_VERSION ]; then packagejson=`cat package.json`; yarn upgrade --no-lockfile selenium-webdriver@$APPLITOOLS_SELENIUM_MAJOR_VERSION; echo \"$packagejson\" > package.json; fi",
|
|
47
49
|
"deps": "bongo deps",
|
|
48
50
|
"gh:test": "gh workflow run test.yml --ref $(git rev-parse --abbrev-ref HEAD) -f packages='spec-selenium spec-selenium@3' -f links='types utils test-utils'",
|
|
49
51
|
"gh:publish": "gh workflow run publish.yml --ref $(git rev-parse --abbrev-ref HEAD) -f packages='spec-selenium'",
|
|
@@ -57,19 +59,20 @@
|
|
|
57
59
|
}
|
|
58
60
|
},
|
|
59
61
|
"dependencies": {
|
|
60
|
-
"@applitools/types": "1.0.
|
|
61
|
-
"@applitools/utils": "1.2.
|
|
62
|
+
"@applitools/types": "1.0.23",
|
|
63
|
+
"@applitools/utils": "1.2.11"
|
|
62
64
|
},
|
|
63
65
|
"devDependencies": {
|
|
64
|
-
"@applitools/api-extractor": "^1.2.
|
|
65
|
-
"@applitools/scripts": "1.0
|
|
66
|
-
"@applitools/sdk-release-kit": "0.13.
|
|
67
|
-
"@applitools/test-utils": "1.0.
|
|
66
|
+
"@applitools/api-extractor": "^1.2.6",
|
|
67
|
+
"@applitools/scripts": "1.1.0",
|
|
68
|
+
"@applitools/sdk-release-kit": "0.13.10",
|
|
69
|
+
"@applitools/test-utils": "1.0.10",
|
|
68
70
|
"@types/mocha": "^9.0.0",
|
|
69
71
|
"@types/node": "^16.10.2",
|
|
70
72
|
"@types/selenium-webdriver": "^4.0.15",
|
|
71
73
|
"@typescript-eslint/eslint-plugin": "^4.15.1",
|
|
72
74
|
"@typescript-eslint/parser": "^4.15.1",
|
|
75
|
+
"chromedriver": "^96",
|
|
73
76
|
"eslint": "^7.9.0",
|
|
74
77
|
"eslint-config-prettier": "^7.2.0",
|
|
75
78
|
"eslint-plugin-mocha-no-only": "^1.1.1",
|
|
@@ -78,10 +81,10 @@
|
|
|
78
81
|
"husky": "^4.3.7",
|
|
79
82
|
"mocha": "^9.1.2",
|
|
80
83
|
"prettier": "^2.4.1",
|
|
81
|
-
"selenium-webdriver": "^4.
|
|
84
|
+
"selenium-webdriver": "^4.1.1",
|
|
82
85
|
"ts-node": "^10.2.1",
|
|
83
86
|
"ttypescript": "^1.5.12",
|
|
84
|
-
"typescript": "^4.5.
|
|
87
|
+
"typescript": "^4.5.4"
|
|
85
88
|
},
|
|
86
89
|
"peerDependencies": {
|
|
87
90
|
"selenium-webdriver": ">=3.6.0"
|
package/types/index.d.ts
CHANGED
|
@@ -11,12 +11,13 @@ export function executeScript(driver: Driver, script: string | ((arg: any) => an
|
|
|
11
11
|
export function mainContext(driver: Driver): Promise<Driver>;
|
|
12
12
|
export function parentContext(driver: Driver): Promise<Driver>;
|
|
13
13
|
export function childContext(driver: Driver, element: Element): Promise<Driver>;
|
|
14
|
-
export function findElement(driver: Driver, selector: Selector, parent
|
|
15
|
-
export function findElements(driver: Driver, selector: Selector, parent
|
|
14
|
+
export function findElement(driver: Driver, selector: Selector, parent?: Element): Promise<Element>;
|
|
15
|
+
export function findElements(driver: Driver, selector: Selector, parent?: Element): Promise<Array<Element>>;
|
|
16
16
|
export function getWindowSize(driver: Driver): Promise<import('@applitools/types').Size>;
|
|
17
17
|
export function setWindowSize(driver: Driver, size: import('@applitools/types').Size): Promise<void>;
|
|
18
|
-
export function getCookies(driver: Driver, context
|
|
18
|
+
export function getCookies(driver: Driver, context?: boolean): Promise<Array<import('@applitools/types').Cookie>>;
|
|
19
19
|
export function getDriverInfo(driver: Driver): Promise<import('@applitools/types').DriverInfo>;
|
|
20
|
+
export function getCapabilities(driver: Driver): Promise<Record<string, any>>;
|
|
20
21
|
export function getTitle(driver: Driver): Promise<string>;
|
|
21
22
|
export function getUrl(driver: Driver): Promise<string>;
|
|
22
23
|
export function visit(driver: Driver, url: string): Promise<void>;
|
|
@@ -26,6 +27,7 @@ export function hover(driver: Driver, element: Element | Selector): Promise<void
|
|
|
26
27
|
export function type(driver: Driver, element: Element | Selector, keys: string): Promise<void>;
|
|
27
28
|
export function scrollIntoView(driver: Driver, element: Element | Selector, align: boolean): Promise<void>;
|
|
28
29
|
export function waitUntilDisplayed(driver: Driver, selector: Selector, timeout: number): Promise<void>;
|
|
30
|
+
export function getBarsHeight(driver: Driver): Promise<{ statusBarHeight: number; navigationBarHeight: number; }>;
|
|
29
31
|
export function getOrientation(driver: Driver): Promise<"portrait" | "landscape">;
|
|
30
32
|
export function getElementRegion(_driver: Driver, element: Element): Promise<import('@applitools/types').Region>;
|
|
31
33
|
export function getElementAttribute(_driver: Driver, element: Element, attr: string): Promise<string>;
|