oxygen-cli 1.22.0 → 1.99.0-alpha.0
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 +0 -50
- package/build/core/OxygenCore.js +56 -145
- package/build/errors/OxygenError.js +5 -15
- package/build/errors/helper.js +45 -49
- package/build/index.js +14 -6
- package/build/lib/cli-util.js +19 -19
- package/build/lib/cli.js +4 -2
- package/build/lib/parallel-launcher.js +333 -0
- package/build/lib/param-manager.js +66 -47
- package/build/lib/util.js +38 -9
- package/build/ox_modules/index.js +1 -97
- package/build/ox_modules/module-assert.js +19 -9
- package/build/ox_modules/module-dns.js +220 -0
- package/build/ox_modules/module-http.js +39 -51
- package/build/ox_modules/module-shell.js +19 -75
- package/build/ox_modules/module-utils.js +1 -108
- package/build/ox_modules/utils.js +1 -357
- package/build/reporter/FileReporterBase.js +5 -5
- package/build/reporter/ReportAggregator.js +127 -4
- package/build/runners/WorkerProcess.js +15 -28
- package/build/runners/index.js +2 -6
- package/build/runners/oxygen/OxygenWorker.js +8 -8
- package/build/runners/oxygen/index.js +17 -18
- package/build/runners/oxygen/worker.js +10 -8
- package/package.json +12 -46
- package/build/lib/img-merge.js +0 -163
- package/build/ox_modules/module-db.js +0 -146
- package/build/ox_modules/module-email.js +0 -212
- package/build/ox_modules/module-eyes.js +0 -189
- package/build/ox_modules/module-mailinator.js +0 -207
- package/build/ox_modules/module-mob/commands/alertAccept.js +0 -35
- package/build/ox_modules/module-mob/commands/alertDismiss.js +0 -35
- package/build/ox_modules/module-mob/commands/assertAlert.js +0 -56
- package/build/ox_modules/module-mob/commands/assertText.js +0 -45
- package/build/ox_modules/module-mob/commands/assertTitle.js +0 -43
- package/build/ox_modules/module-mob/commands/assertValue.js +0 -66
- package/build/ox_modules/module-mob/commands/back.js +0 -27
- package/build/ox_modules/module-mob/commands/clear.js +0 -40
- package/build/ox_modules/module-mob/commands/click.js +0 -35
- package/build/ox_modules/module-mob/commands/clickHidden.js +0 -52
- package/build/ox_modules/module-mob/commands/clickLong.js +0 -34
- package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +0 -37
- package/build/ox_modules/module-mob/commands/closeApp.js +0 -27
- package/build/ox_modules/module-mob/commands/debug.js +0 -26
- package/build/ox_modules/module-mob/commands/dragAndDrop.js +0 -38
- package/build/ox_modules/module-mob/commands/enableNetwork.js +0 -75
- package/build/ox_modules/module-mob/commands/execute.js +0 -32
- package/build/ox_modules/module-mob/commands/findElement.js +0 -36
- package/build/ox_modules/module-mob/commands/findElements.js +0 -39
- package/build/ox_modules/module-mob/commands/getAlertText.js +0 -31
- package/build/ox_modules/module-mob/commands/getAppiumLogs.js +0 -26
- package/build/ox_modules/module-mob/commands/getBrowserLogs.js +0 -66
- package/build/ox_modules/module-mob/commands/getCurrentActivity.js +0 -26
- package/build/ox_modules/module-mob/commands/getCurrentPackage.js +0 -26
- package/build/ox_modules/module-mob/commands/getDeviceLogs.js +0 -57
- package/build/ox_modules/module-mob/commands/getDeviceTime.js +0 -27
- package/build/ox_modules/module-mob/commands/getLocation.js +0 -32
- package/build/ox_modules/module-mob/commands/getSource.js +0 -26
- package/build/ox_modules/module-mob/commands/getText.js +0 -36
- package/build/ox_modules/module-mob/commands/getTitle.js +0 -24
- package/build/ox_modules/module-mob/commands/getUrl.js +0 -28
- package/build/ox_modules/module-mob/commands/getValue.js +0 -50
- package/build/ox_modules/module-mob/commands/getWindowHandles.js +0 -27
- package/build/ox_modules/module-mob/commands/hideKeyboard.js +0 -33
- package/build/ox_modules/module-mob/commands/index.js +0 -594
- package/build/ox_modules/module-mob/commands/installApp.js +0 -28
- package/build/ox_modules/module-mob/commands/isAppInstalled.js +0 -28
- package/build/ox_modules/module-mob/commands/isCheckable.js +0 -31
- package/build/ox_modules/module-mob/commands/isChecked.js +0 -31
- package/build/ox_modules/module-mob/commands/isClickable.js +0 -31
- package/build/ox_modules/module-mob/commands/isExist.js +0 -36
- package/build/ox_modules/module-mob/commands/isSelected.js +0 -36
- package/build/ox_modules/module-mob/commands/isVisible.js +0 -36
- package/build/ox_modules/module-mob/commands/isWebViewContext.js +0 -27
- package/build/ox_modules/module-mob/commands/launchApp.js +0 -26
- package/build/ox_modules/module-mob/commands/longPressKeyCode.js +0 -30
- package/build/ox_modules/module-mob/commands/open.js +0 -43
- package/build/ox_modules/module-mob/commands/pause.js +0 -27
- package/build/ox_modules/module-mob/commands/removeApp.js +0 -28
- package/build/ox_modules/module-mob/commands/resetApp.js +0 -26
- package/build/ox_modules/module-mob/commands/scrollIntoElement.js +0 -86
- package/build/ox_modules/module-mob/commands/scrollIntoView.js +0 -40
- package/build/ox_modules/module-mob/commands/select.js +0 -54
- package/build/ox_modules/module-mob/commands/selectFrame.js +0 -53
- package/build/ox_modules/module-mob/commands/selectWindow.js +0 -149
- package/build/ox_modules/module-mob/commands/sendKeys.js +0 -84
- package/build/ox_modules/module-mob/commands/setContext.js +0 -28
- package/build/ox_modules/module-mob/commands/setNativeContext.js +0 -26
- package/build/ox_modules/module-mob/commands/setTimeout.js +0 -33
- package/build/ox_modules/module-mob/commands/setWebViewContext.js +0 -39
- package/build/ox_modules/module-mob/commands/shake.js +0 -27
- package/build/ox_modules/module-mob/commands/smsClickLink.js +0 -32
- package/build/ox_modules/module-mob/commands/smsGetText.js +0 -45
- package/build/ox_modules/module-mob/commands/swipe.js +0 -58
- package/build/ox_modules/module-mob/commands/swipeElement.js +0 -58
- package/build/ox_modules/module-mob/commands/swipeScreen.js +0 -56
- package/build/ox_modules/module-mob/commands/takeScreenshot.js +0 -27
- package/build/ox_modules/module-mob/commands/tap.js +0 -34
- package/build/ox_modules/module-mob/commands/type.js +0 -67
- package/build/ox_modules/module-mob/commands/unlockPattern.js +0 -92
- package/build/ox_modules/module-mob/commands/waitForExist.js +0 -29
- package/build/ox_modules/module-mob/commands/waitForInteractable.js +0 -42
- package/build/ox_modules/module-mob/commands/waitForVisible.js +0 -28
- package/build/ox_modules/module-mob.js +0 -699
- package/build/ox_modules/module-pdf.js +0 -328
- package/build/ox_modules/module-proxy.js +0 -324
- package/build/ox_modules/module-serial.js +0 -187
- package/build/ox_modules/module-soap.js +0 -260
- package/build/ox_modules/module-twilio.js +0 -192
- package/build/ox_modules/module-web/commands/alertAccept.js +0 -35
- package/build/ox_modules/module-web/commands/alertDismiss.js +0 -35
- package/build/ox_modules/module-web/commands/assertAlert.js +0 -55
- package/build/ox_modules/module-web/commands/assertExist.js +0 -28
- package/build/ox_modules/module-web/commands/assertSelectedLabel.js +0 -51
- package/build/ox_modules/module-web/commands/assertSelectedValue.js +0 -45
- package/build/ox_modules/module-web/commands/assertText.js +0 -45
- package/build/ox_modules/module-web/commands/assertTextNotPresent.js +0 -56
- package/build/ox_modules/module-web/commands/assertTextPresent.js +0 -52
- package/build/ox_modules/module-web/commands/assertTitle.js +0 -42
- package/build/ox_modules/module-web/commands/assertValue.js +0 -44
- package/build/ox_modules/module-web/commands/back.js +0 -27
- package/build/ox_modules/module-web/commands/clear.js +0 -41
- package/build/ox_modules/module-web/commands/click.js +0 -112
- package/build/ox_modules/module-web/commands/clickHidden.js +0 -79
- package/build/ox_modules/module-web/commands/closeWindow.js +0 -25
- package/build/ox_modules/module-web/commands/debug.js +0 -25
- package/build/ox_modules/module-web/commands/deleteCookies.js +0 -22
- package/build/ox_modules/module-web/commands/deselect.js +0 -34
- package/build/ox_modules/module-web/commands/doubleClick.js +0 -65
- package/build/ox_modules/module-web/commands/dragAndDrop.js +0 -36
- package/build/ox_modules/module-web/commands/execute.js +0 -36
- package/build/ox_modules/module-web/commands/fileBrowse.js +0 -72
- package/build/ox_modules/module-web/commands/findElement.js +0 -35
- package/build/ox_modules/module-web/commands/findElements.js +0 -38
- package/build/ox_modules/module-web/commands/fullscreenWindow.js +0 -24
- package/build/ox_modules/module-web/commands/getAlertText.js +0 -30
- package/build/ox_modules/module-web/commands/getAttribute.js +0 -38
- package/build/ox_modules/module-web/commands/getBrowserLogs.js +0 -34
- package/build/ox_modules/module-web/commands/getCookies.js +0 -23
- package/build/ox_modules/module-web/commands/getCssValue.js +0 -38
- package/build/ox_modules/module-web/commands/getElementCount.js +0 -29
- package/build/ox_modules/module-web/commands/getHTML.js +0 -30
- package/build/ox_modules/module-web/commands/getSource.js +0 -26
- package/build/ox_modules/module-web/commands/getText.js +0 -36
- package/build/ox_modules/module-web/commands/getTitle.js +0 -22
- package/build/ox_modules/module-web/commands/getUrl.js +0 -26
- package/build/ox_modules/module-web/commands/getValue.js +0 -43
- package/build/ox_modules/module-web/commands/getWindowHandles.js +0 -26
- package/build/ox_modules/module-web/commands/getWindowSize.js +0 -26
- package/build/ox_modules/module-web/commands/getXMLPageSource.js +0 -51
- package/build/ox_modules/module-web/commands/index.js +0 -634
- package/build/ox_modules/module-web/commands/isAlertPresent.js +0 -31
- package/build/ox_modules/module-web/commands/isChecked.js +0 -30
- package/build/ox_modules/module-web/commands/isExist.js +0 -36
- package/build/ox_modules/module-web/commands/isSelected.js +0 -35
- package/build/ox_modules/module-web/commands/isVisible.js +0 -36
- package/build/ox_modules/module-web/commands/makeVisible.js +0 -74
- package/build/ox_modules/module-web/commands/maximizeWindow.js +0 -24
- package/build/ox_modules/module-web/commands/minimizeWindow.js +0 -24
- package/build/ox_modules/module-web/commands/newWindow.js +0 -27
- package/build/ox_modules/module-web/commands/open.js +0 -42
- package/build/ox_modules/module-web/commands/pause.js +0 -26
- package/build/ox_modules/module-web/commands/point.js +0 -37
- package/build/ox_modules/module-web/commands/pointJS.js +0 -56
- package/build/ox_modules/module-web/commands/refresh.js +0 -26
- package/build/ox_modules/module-web/commands/rightClick.js +0 -61
- package/build/ox_modules/module-web/commands/rightClickActions.js +0 -57
- package/build/ox_modules/module-web/commands/scrollToElement.js +0 -33
- package/build/ox_modules/module-web/commands/select.js +0 -55
- package/build/ox_modules/module-web/commands/selectFrame.js +0 -52
- package/build/ox_modules/module-web/commands/selectWindow.js +0 -148
- package/build/ox_modules/module-web/commands/sendKeys.js +0 -56
- package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +0 -33
- package/build/ox_modules/module-web/commands/setTimeout.js +0 -33
- package/build/ox_modules/module-web/commands/setWindowSize.js +0 -29
- package/build/ox_modules/module-web/commands/takeScreenshot.js +0 -37
- package/build/ox_modules/module-web/commands/type.js +0 -52
- package/build/ox_modules/module-web/commands/waitForAngular.js +0 -83
- package/build/ox_modules/module-web/commands/waitForExist.js +0 -28
- package/build/ox_modules/module-web/commands/waitForInteractable.js +0 -31
- package/build/ox_modules/module-web/commands/waitForNotExist.js +0 -57
- package/build/ox_modules/module-web/commands/waitForNotText.js +0 -45
- package/build/ox_modules/module-web/commands/waitForNotValue.js +0 -45
- package/build/ox_modules/module-web/commands/waitForText.js +0 -45
- package/build/ox_modules/module-web/commands/waitForValue.js +0 -45
- package/build/ox_modules/module-web/commands/waitForVisible.js +0 -28
- package/build/ox_modules/module-web/commands/waitForWindow.js +0 -118
- package/build/ox_modules/module-web.js +0 -909
- package/build/ox_modules/module-win/commands/assertText.js +0 -41
- package/build/ox_modules/module-win/commands/assertTitle.js +0 -38
- package/build/ox_modules/module-win/commands/assertValue.js +0 -62
- package/build/ox_modules/module-win/commands/back.js +0 -21
- package/build/ox_modules/module-win/commands/clear.js +0 -34
- package/build/ox_modules/module-win/commands/click.js +0 -25
- package/build/ox_modules/module-win/commands/clickLong.js +0 -30
- package/build/ox_modules/module-win/commands/clickMultipleTimes.js +0 -33
- package/build/ox_modules/module-win/commands/findElement.js +0 -31
- package/build/ox_modules/module-win/commands/findElements.js +0 -31
- package/build/ox_modules/module-win/commands/getAppiumLogs.js +0 -22
- package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +0 -25
- package/build/ox_modules/module-win/commands/getLocation.js +0 -26
- package/build/ox_modules/module-win/commands/getSource.js +0 -22
- package/build/ox_modules/module-win/commands/getText.js +0 -32
- package/build/ox_modules/module-win/commands/getValue.js +0 -46
- package/build/ox_modules/module-win/commands/getWindowHandles.js +0 -25
- package/build/ox_modules/module-win/commands/index.js +0 -298
- package/build/ox_modules/module-win/commands/isCheckable.js +0 -26
- package/build/ox_modules/module-win/commands/isChecked.js +0 -26
- package/build/ox_modules/module-win/commands/isClickable.js +0 -26
- package/build/ox_modules/module-win/commands/isExist.js +0 -32
- package/build/ox_modules/module-win/commands/isSelected.js +0 -26
- package/build/ox_modules/module-win/commands/isVisible.js +0 -32
- package/build/ox_modules/module-win/commands/open.js +0 -24
- package/build/ox_modules/module-win/commands/pause.js +0 -23
- package/build/ox_modules/module-win/commands/rightClick.js +0 -30
- package/build/ox_modules/module-win/commands/selectWindow.js +0 -97
- package/build/ox_modules/module-win/commands/sendKeys.js +0 -50
- package/build/ox_modules/module-win/commands/setTimeout.js +0 -29
- package/build/ox_modules/module-win/commands/takeScreenshot.js +0 -26
- package/build/ox_modules/module-win/commands/tap.js +0 -29
- package/build/ox_modules/module-win/commands/type.js +0 -38
- package/build/ox_modules/module-win/commands/waitForExist.js +0 -25
- package/build/ox_modules/module-win/commands/waitForInteractable.js +0 -43
- package/build/ox_modules/module-win/commands/waitForVisible.js +0 -24
- package/build/ox_modules/module-win.js +0 -367
- package/build/ox_services/service-devtools/submodule-network.js +0 -338
- package/build/ox_services/service-devtools.js +0 -83
- package/build/runners/cucumber/CucumberEventListener.js +0 -181
- package/build/runners/cucumber/CucumberReporter.js +0 -277
- package/build/runners/cucumber/CucumberWorker.js +0 -337
- package/build/runners/cucumber/index.js +0 -159
- package/build/runners/cucumber/worker.js +0 -184
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("source-map-support/register");
|
|
4
|
-
|
|
5
|
-
/*
|
|
6
|
-
* Copyright (C) 2015-present CloudBeat Limited
|
|
7
|
-
*
|
|
8
|
-
* This program is free software: you can redistribute it and/or modify
|
|
9
|
-
* it under the terms of the GNU General Public License as published by
|
|
10
|
-
* the Free Software Foundation, either version 3 of the License, or
|
|
11
|
-
* (at your option) any later version.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @summary Perform right click on an element.
|
|
16
|
-
* @function rightClickActions
|
|
17
|
-
* @param {String|Element} locator - An element locator.
|
|
18
|
-
* @param {Number=} timeout - Timeout in milliseconds. Default is 60 seconds.
|
|
19
|
-
* @param {Number=} xOffset - x offset in pixels. Default is 0.
|
|
20
|
-
* @param {Number=} yOffset - y offset in pixels. Default is 0.
|
|
21
|
-
* @example <caption>[javascript] Usage example</caption>
|
|
22
|
-
* web.init();
|
|
23
|
-
* web.open("www.yourwebsite.com");
|
|
24
|
-
* web.rightClickActions("id=someElement", 10, -5);
|
|
25
|
-
*/
|
|
26
|
-
module.exports = async function (locator, xOffset = 0, yOffset = 0, timeout) {
|
|
27
|
-
this.helpers.assertArgumentTimeout(timeout, 'timeout');
|
|
28
|
-
this.helpers.assertArgumentNumber(xOffset, 'xOffset');
|
|
29
|
-
this.helpers.assertArgumentNumber(yOffset, 'yOffset');
|
|
30
|
-
const el = await this.helpers.getElement(locator, false, timeout);
|
|
31
|
-
const loc = await el.getLocation();
|
|
32
|
-
const x = parseInt(loc.x) + xOffset;
|
|
33
|
-
const y = parseInt(loc.y) + yOffset;
|
|
34
|
-
await this.driver.performActions([{
|
|
35
|
-
type: 'pointer',
|
|
36
|
-
id: 'pointer1',
|
|
37
|
-
parameters: {
|
|
38
|
-
pointerType: 'mouse'
|
|
39
|
-
},
|
|
40
|
-
actions: [{
|
|
41
|
-
type: 'pointerMove',
|
|
42
|
-
duration: 100,
|
|
43
|
-
x: x,
|
|
44
|
-
y: y
|
|
45
|
-
}, {
|
|
46
|
-
type: 'pointerDown',
|
|
47
|
-
button: 2
|
|
48
|
-
}, {
|
|
49
|
-
type: 'pointerUp',
|
|
50
|
-
button: 2
|
|
51
|
-
}]
|
|
52
|
-
}]);
|
|
53
|
-
const releaseActionsRetVal = await this.driver.releaseActions();
|
|
54
|
-
await this.checkWaitForAngular();
|
|
55
|
-
return releaseActionsRetVal;
|
|
56
|
-
};
|
|
57
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS13ZWIvY29tbWFuZHMvcmlnaHRDbGlja0FjdGlvbnMuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsImxvY2F0b3IiLCJ4T2Zmc2V0IiwieU9mZnNldCIsInRpbWVvdXQiLCJoZWxwZXJzIiwiYXNzZXJ0QXJndW1lbnRUaW1lb3V0IiwiYXNzZXJ0QXJndW1lbnROdW1iZXIiLCJlbCIsImdldEVsZW1lbnQiLCJsb2MiLCJnZXRMb2NhdGlvbiIsIngiLCJwYXJzZUludCIsInkiLCJkcml2ZXIiLCJwZXJmb3JtQWN0aW9ucyIsInR5cGUiLCJpZCIsInBhcmFtZXRlcnMiLCJwb2ludGVyVHlwZSIsImFjdGlvbnMiLCJkdXJhdGlvbiIsImJ1dHRvbiIsInJlbGVhc2VBY3Rpb25zUmV0VmFsIiwicmVsZWFzZUFjdGlvbnMiLCJjaGVja1dhaXRGb3JBbmd1bGFyIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLGdCQUFlQyxPQUFmLEVBQXdCQyxPQUFPLEdBQUcsQ0FBbEMsRUFBcUNDLE9BQU8sR0FBRyxDQUEvQyxFQUFrREMsT0FBbEQsRUFBMkQ7QUFDeEUsT0FBS0MsT0FBTCxDQUFhQyxxQkFBYixDQUFtQ0YsT0FBbkMsRUFBNEMsU0FBNUM7QUFDQSxPQUFLQyxPQUFMLENBQWFFLG9CQUFiLENBQWtDTCxPQUFsQyxFQUEyQyxTQUEzQztBQUNBLE9BQUtHLE9BQUwsQ0FBYUUsb0JBQWIsQ0FBa0NKLE9BQWxDLEVBQTJDLFNBQTNDO0FBRUEsUUFBTUssRUFBRSxHQUFHLE1BQU0sS0FBS0gsT0FBTCxDQUFhSSxVQUFiLENBQXdCUixPQUF4QixFQUFpQyxLQUFqQyxFQUF3Q0csT0FBeEMsQ0FBakI7QUFDQSxRQUFNTSxHQUFHLEdBQUcsTUFBTUYsRUFBRSxDQUFDRyxXQUFILEVBQWxCO0FBRUEsUUFBTUMsQ0FBQyxHQUFHQyxRQUFRLENBQUNILEdBQUcsQ0FBQ0UsQ0FBTCxDQUFSLEdBQWtCVixPQUE1QjtBQUNBLFFBQU1ZLENBQUMsR0FBR0QsUUFBUSxDQUFDSCxHQUFHLENBQUNJLENBQUwsQ0FBUixHQUFrQlgsT0FBNUI7QUFFQSxRQUFNLEtBQUtZLE1BQUwsQ0FBWUMsY0FBWixDQUEyQixDQUFDO0FBQzlCQyxJQUFBQSxJQUFJLEVBQUUsU0FEd0I7QUFFOUJDLElBQUFBLEVBQUUsRUFBRSxVQUYwQjtBQUc5QkMsSUFBQUEsVUFBVSxFQUFFO0FBQ1JDLE1BQUFBLFdBQVcsRUFBRTtBQURMLEtBSGtCO0FBTTlCQyxJQUFBQSxPQUFPLEVBQUUsQ0FDTDtBQUNJSixNQUFBQSxJQUFJLEVBQUUsYUFEVjtBQUVJSyxNQUFBQSxRQUFRLEVBQUUsR0FGZDtBQUdJVixNQUFBQSxDQUFDLEVBQUVBLENBSFA7QUFJSUUsTUFBQUEsQ0FBQyxFQUFFQTtBQUpQLEtBREssRUFPTDtBQUNJRyxNQUFBQSxJQUFJLEVBQUUsYUFEVjtBQUVJTSxNQUFBQSxNQUFNLEVBQUU7QUFGWixLQVBLLEVBVUY7QUFDQ04sTUFBQUEsSUFBSSxFQUFFLFdBRFA7QUFFQ00sTUFBQUEsTUFBTSxFQUFFO0FBRlQsS0FWRTtBQU5xQixHQUFELENBQTNCLENBQU47QUFzQkEsUUFBTUMsb0JBQW9CLEdBQUcsTUFBTSxLQUFLVCxNQUFMLENBQVlVLGNBQVosRUFBbkM7QUFDQSxRQUFNLEtBQUtDLG1CQUFMLEVBQU47QUFDQSxTQUFPRixvQkFBUDtBQUNILENBcENEIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogQHN1bW1hcnkgUGVyZm9ybSByaWdodCBjbGljayBvbiBhbiBlbGVtZW50LlxyXG4gKiBAZnVuY3Rpb24gcmlnaHRDbGlja0FjdGlvbnNcclxuICogQHBhcmFtIHtTdHJpbmd8RWxlbWVudH0gbG9jYXRvciAtIEFuIGVsZW1lbnQgbG9jYXRvci5cclxuICogQHBhcmFtIHtOdW1iZXI9fSB0aW1lb3V0IC0gVGltZW91dCBpbiBtaWxsaXNlY29uZHMuIERlZmF1bHQgaXMgNjAgc2Vjb25kcy5cclxuICogQHBhcmFtIHtOdW1iZXI9fSB4T2Zmc2V0IC0geCBvZmZzZXQgaW4gcGl4ZWxzLiBEZWZhdWx0IGlzIDAuXHJcbiAqIEBwYXJhbSB7TnVtYmVyPX0geU9mZnNldCAtIHkgb2Zmc2V0IGluIHBpeGVscy4gRGVmYXVsdCBpcyAwLlxyXG4gKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICogd2ViLmluaXQoKTtcclxuICogd2ViLm9wZW4oXCJ3d3cueW91cndlYnNpdGUuY29tXCIpO1xyXG4gKiB3ZWIucmlnaHRDbGlja0FjdGlvbnMoXCJpZD1zb21lRWxlbWVudFwiLCAxMCwgLTUpO1xyXG4gKi9cclxubW9kdWxlLmV4cG9ydHMgPSBhc3luYyBmdW5jdGlvbihsb2NhdG9yLCB4T2Zmc2V0ID0gMCwgeU9mZnNldCA9IDAsIHRpbWVvdXQpIHtcclxuICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudFRpbWVvdXQodGltZW91dCwgJ3RpbWVvdXQnKTtcclxuICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudE51bWJlcih4T2Zmc2V0LCAneE9mZnNldCcpO1xyXG4gICAgdGhpcy5oZWxwZXJzLmFzc2VydEFyZ3VtZW50TnVtYmVyKHlPZmZzZXQsICd5T2Zmc2V0Jyk7XHJcblxyXG4gICAgY29uc3QgZWwgPSBhd2FpdCB0aGlzLmhlbHBlcnMuZ2V0RWxlbWVudChsb2NhdG9yLCBmYWxzZSwgdGltZW91dCk7XHJcbiAgICBjb25zdCBsb2MgPSBhd2FpdCBlbC5nZXRMb2NhdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IHggPSBwYXJzZUludChsb2MueCkgKyB4T2Zmc2V0O1xyXG4gICAgY29uc3QgeSA9IHBhcnNlSW50KGxvYy55KSArIHlPZmZzZXQ7XHJcblxyXG4gICAgYXdhaXQgdGhpcy5kcml2ZXIucGVyZm9ybUFjdGlvbnMoW3tcclxuICAgICAgICB0eXBlOiAncG9pbnRlcicsXHJcbiAgICAgICAgaWQ6ICdwb2ludGVyMScsXHJcbiAgICAgICAgcGFyYW1ldGVyczoge1xyXG4gICAgICAgICAgICBwb2ludGVyVHlwZTogJ21vdXNlJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYWN0aW9uczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAncG9pbnRlck1vdmUnLFxyXG4gICAgICAgICAgICAgICAgZHVyYXRpb246IDEwMCxcclxuICAgICAgICAgICAgICAgIHg6IHgsXHJcbiAgICAgICAgICAgICAgICB5OiB5XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdwb2ludGVyRG93bicsXHJcbiAgICAgICAgICAgICAgICBidXR0b246IDJcclxuICAgICAgICAgICAgfSwge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ3BvaW50ZXJVcCcsXHJcbiAgICAgICAgICAgICAgICBidXR0b246IDJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIF1cclxuICAgIH1dKTtcclxuICAgIGNvbnN0IHJlbGVhc2VBY3Rpb25zUmV0VmFsID0gYXdhaXQgdGhpcy5kcml2ZXIucmVsZWFzZUFjdGlvbnMoKTtcclxuICAgIGF3YWl0IHRoaXMuY2hlY2tXYWl0Rm9yQW5ndWxhcigpO1xyXG4gICAgcmV0dXJuIHJlbGVhc2VBY3Rpb25zUmV0VmFsO1xyXG59OyJdfQ==
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("source-map-support/register");
|
|
4
|
-
|
|
5
|
-
/*
|
|
6
|
-
* Copyright (C) 2015-present CloudBeat Limited
|
|
7
|
-
*
|
|
8
|
-
* This program is free software: you can redistribute it and/or modify
|
|
9
|
-
* it under the terms of the GNU General Public License as published by
|
|
10
|
-
* the Free Software Foundation, either version 3 of the License, or
|
|
11
|
-
* (at your option) any later version.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @summary Scrolls the page or a container element to the location of the specified element.
|
|
16
|
-
* @function scrollToElement
|
|
17
|
-
* @param {String|Element} locator - An element locator.
|
|
18
|
-
* @param {Boolean=} alignToTop - If true, the top of the element will be aligned to the top of the
|
|
19
|
-
* visible area of the scrollable ancestor. This is the default.
|
|
20
|
-
* If false, the bottom of the element will be aligned to the bottom
|
|
21
|
-
* of the visible area of the scrollable ancestor.
|
|
22
|
-
* @param {Number=} timeout - Timeout in milliseconds. Default is 60 seconds.
|
|
23
|
-
* @example <caption>[javascript] Usage example</caption>
|
|
24
|
-
* web.init();//Opens browser session.
|
|
25
|
-
* web.open("www.yourwebsite.com");// Opens a website.
|
|
26
|
-
* web.scrollToElement("id=Button", true);// Scrolls to an element.
|
|
27
|
-
*/
|
|
28
|
-
module.exports = async function (locator, alignToTop = true, timeout) {
|
|
29
|
-
this.helpers.assertArgumentTimeout(timeout, 'timeout');
|
|
30
|
-
var el = await this.helpers.getElement(locator, false, timeout);
|
|
31
|
-
await el.scrollIntoView(alignToTop);
|
|
32
|
-
};
|
|
33
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS13ZWIvY29tbWFuZHMvc2Nyb2xsVG9FbGVtZW50LmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJsb2NhdG9yIiwiYWxpZ25Ub1RvcCIsInRpbWVvdXQiLCJoZWxwZXJzIiwiYXNzZXJ0QXJndW1lbnRUaW1lb3V0IiwiZWwiLCJnZXRFbGVtZW50Iiwic2Nyb2xsSW50b1ZpZXciXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLGdCQUFlQyxPQUFmLEVBQXdCQyxVQUFVLEdBQUcsSUFBckMsRUFBMkNDLE9BQTNDLEVBQW9EO0FBQ2pFLE9BQUtDLE9BQUwsQ0FBYUMscUJBQWIsQ0FBbUNGLE9BQW5DLEVBQTRDLFNBQTVDO0FBRUEsTUFBSUcsRUFBRSxHQUFHLE1BQU0sS0FBS0YsT0FBTCxDQUFhRyxVQUFiLENBQXdCTixPQUF4QixFQUFpQyxLQUFqQyxFQUF3Q0UsT0FBeEMsQ0FBZjtBQUNBLFFBQU1HLEVBQUUsQ0FBQ0UsY0FBSCxDQUFrQk4sVUFBbEIsQ0FBTjtBQUNILENBTEQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAc3VtbWFyeSBTY3JvbGxzIHRoZSBwYWdlIG9yIGEgY29udGFpbmVyIGVsZW1lbnQgdG8gdGhlIGxvY2F0aW9uIG9mIHRoZSBzcGVjaWZpZWQgZWxlbWVudC5cclxuICogQGZ1bmN0aW9uIHNjcm9sbFRvRWxlbWVudFxyXG4gKiBAcGFyYW0ge1N0cmluZ3xFbGVtZW50fSBsb2NhdG9yIC0gQW4gZWxlbWVudCBsb2NhdG9yLlxyXG4gKiBAcGFyYW0ge0Jvb2xlYW49fSBhbGlnblRvVG9wIC0gSWYgdHJ1ZSwgdGhlIHRvcCBvZiB0aGUgZWxlbWVudCB3aWxsIGJlIGFsaWduZWQgdG8gdGhlIHRvcCBvZiB0aGUgXHJcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlIGFyZWEgb2YgdGhlIHNjcm9sbGFibGUgYW5jZXN0b3IuIFRoaXMgaXMgdGhlIGRlZmF1bHQuXHJcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBmYWxzZSwgdGhlIGJvdHRvbSBvZiB0aGUgZWxlbWVudCB3aWxsIGJlIGFsaWduZWQgdG8gdGhlIGJvdHRvbSBcclxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSB2aXNpYmxlIGFyZWEgb2YgdGhlIHNjcm9sbGFibGUgYW5jZXN0b3IuIFxyXG4gKiBAcGFyYW0ge051bWJlcj19IHRpbWVvdXQgLSBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdCBpcyA2MCBzZWNvbmRzLlxyXG4gKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICogd2ViLmluaXQoKTsvL09wZW5zIGJyb3dzZXIgc2Vzc2lvbi5cclxuICogd2ViLm9wZW4oXCJ3d3cueW91cndlYnNpdGUuY29tXCIpOy8vIE9wZW5zIGEgd2Vic2l0ZS5cclxuICogd2ViLnNjcm9sbFRvRWxlbWVudChcImlkPUJ1dHRvblwiLCB0cnVlKTsvLyBTY3JvbGxzIHRvIGFuIGVsZW1lbnQuIFxyXG4gKi9cclxubW9kdWxlLmV4cG9ydHMgPSBhc3luYyBmdW5jdGlvbihsb2NhdG9yLCBhbGlnblRvVG9wID0gdHJ1ZSwgdGltZW91dCkge1xyXG4gICAgdGhpcy5oZWxwZXJzLmFzc2VydEFyZ3VtZW50VGltZW91dCh0aW1lb3V0LCAndGltZW91dCcpO1xyXG5cclxuICAgIHZhciBlbCA9IGF3YWl0IHRoaXMuaGVscGVycy5nZXRFbGVtZW50KGxvY2F0b3IsIGZhbHNlLCB0aW1lb3V0KTtcclxuICAgIGF3YWl0IGVsLnNjcm9sbEludG9WaWV3KGFsaWduVG9Ub3ApO1xyXG59O1xyXG4iXX0=
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("source-map-support/register");
|
|
4
|
-
|
|
5
|
-
/*
|
|
6
|
-
* Copyright (C) 2015-present CloudBeat Limited
|
|
7
|
-
*
|
|
8
|
-
* This program is free software: you can redistribute it and/or modify
|
|
9
|
-
* it under the terms of the GNU General Public License as published by
|
|
10
|
-
* the Free Software Foundation, either version 3 of the License, or
|
|
11
|
-
* (at your option) any later version.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @summary Selects an option from a drop-down list using an option locator. This command works
|
|
16
|
-
* with multiple-choice lists as well.
|
|
17
|
-
* @description Option locator can be one of the following (No prefix is same as label matching):
|
|
18
|
-
* - `label=STRING` - Matches option based on the visible text.
|
|
19
|
-
* - `value=STRING` - Matches option based on its value.
|
|
20
|
-
* - `index=STRING` - Matches option based on its index. The index is 0-based.
|
|
21
|
-
* @function select
|
|
22
|
-
* @param {String} selectLocator - An element locator identifying a drop-down menu.
|
|
23
|
-
* @param {String} optionLocator - An option locator.
|
|
24
|
-
* @param {Number=} timeout - Timeout in milliseconds. Default is 60 seconds.
|
|
25
|
-
* @example <caption>[javascript] Usage example</caption>
|
|
26
|
-
* web.init();//Opens browser session.
|
|
27
|
-
* web.open("www.yourwebsite.com");// Opens a website.
|
|
28
|
-
* web.select("id=Selection","label=United States");// Selects an option from a list.
|
|
29
|
-
*/
|
|
30
|
-
module.exports = async function (selectLocator, optionLocator, timeout) {
|
|
31
|
-
this.helpers.assertArgumentNonEmptyString(optionLocator, 'optionLocator');
|
|
32
|
-
this.helpers.assertArgumentTimeout(timeout, 'timeout');
|
|
33
|
-
var el = await this.helpers.getElement(selectLocator, false, timeout);
|
|
34
|
-
|
|
35
|
-
try {
|
|
36
|
-
if (optionLocator.indexOf('value=') === 0) {
|
|
37
|
-
await el.selectByAttribute('value', optionLocator.substring('value='.length));
|
|
38
|
-
} else if (optionLocator.indexOf('index=') === 0) {
|
|
39
|
-
await el.selectByIndex(optionLocator.substring('index='.length));
|
|
40
|
-
} else if (optionLocator.indexOf('label=') === 0) {
|
|
41
|
-
await el.selectByVisibleText(optionLocator.substring('label='.length));
|
|
42
|
-
} else {
|
|
43
|
-
await el.selectByVisibleText(optionLocator);
|
|
44
|
-
}
|
|
45
|
-
} catch (e) {
|
|
46
|
-
if (e.message && e.message.startsWith('Option with ')) {
|
|
47
|
-
throw new this.OxError(this.errHelper.errorCode.OPTION_NOT_FOUND, e.message);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
throw e;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
await this.checkWaitForAngular();
|
|
54
|
-
};
|
|
55
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS13ZWIvY29tbWFuZHMvc2VsZWN0LmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJzZWxlY3RMb2NhdG9yIiwib3B0aW9uTG9jYXRvciIsInRpbWVvdXQiLCJoZWxwZXJzIiwiYXNzZXJ0QXJndW1lbnROb25FbXB0eVN0cmluZyIsImFzc2VydEFyZ3VtZW50VGltZW91dCIsImVsIiwiZ2V0RWxlbWVudCIsImluZGV4T2YiLCJzZWxlY3RCeUF0dHJpYnV0ZSIsInN1YnN0cmluZyIsImxlbmd0aCIsInNlbGVjdEJ5SW5kZXgiLCJzZWxlY3RCeVZpc2libGVUZXh0IiwiZSIsIm1lc3NhZ2UiLCJzdGFydHNXaXRoIiwiT3hFcnJvciIsImVyckhlbHBlciIsImVycm9yQ29kZSIsIk9QVElPTl9OT1RfRk9VTkQiLCJjaGVja1dhaXRGb3JBbmd1bGFyIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUIsZ0JBQWVDLGFBQWYsRUFBOEJDLGFBQTlCLEVBQTZDQyxPQUE3QyxFQUFzRDtBQUNuRSxPQUFLQyxPQUFMLENBQWFDLDRCQUFiLENBQTBDSCxhQUExQyxFQUF5RCxlQUF6RDtBQUNBLE9BQUtFLE9BQUwsQ0FBYUUscUJBQWIsQ0FBbUNILE9BQW5DLEVBQTRDLFNBQTVDO0FBRUEsTUFBSUksRUFBRSxHQUFHLE1BQU0sS0FBS0gsT0FBTCxDQUFhSSxVQUFiLENBQXdCUCxhQUF4QixFQUF1QyxLQUF2QyxFQUE4Q0UsT0FBOUMsQ0FBZjs7QUFFQSxNQUFJO0FBQ0EsUUFBSUQsYUFBYSxDQUFDTyxPQUFkLENBQXNCLFFBQXRCLE1BQW9DLENBQXhDLEVBQTJDO0FBQ3ZDLFlBQU1GLEVBQUUsQ0FBQ0csaUJBQUgsQ0FBcUIsT0FBckIsRUFBOEJSLGFBQWEsQ0FBQ1MsU0FBZCxDQUF3QixTQUFTQyxNQUFqQyxDQUE5QixDQUFOO0FBQ0gsS0FGRCxNQUVPLElBQUlWLGFBQWEsQ0FBQ08sT0FBZCxDQUFzQixRQUF0QixNQUFvQyxDQUF4QyxFQUEyQztBQUM5QyxZQUFNRixFQUFFLENBQUNNLGFBQUgsQ0FBaUJYLGFBQWEsQ0FBQ1MsU0FBZCxDQUF3QixTQUFTQyxNQUFqQyxDQUFqQixDQUFOO0FBQ0gsS0FGTSxNQUVBLElBQUlWLGFBQWEsQ0FBQ08sT0FBZCxDQUFzQixRQUF0QixNQUFvQyxDQUF4QyxFQUEyQztBQUM5QyxZQUFNRixFQUFFLENBQUNPLG1CQUFILENBQXVCWixhQUFhLENBQUNTLFNBQWQsQ0FBd0IsU0FBU0MsTUFBakMsQ0FBdkIsQ0FBTjtBQUNILEtBRk0sTUFFQTtBQUNILFlBQU1MLEVBQUUsQ0FBQ08sbUJBQUgsQ0FBdUJaLGFBQXZCLENBQU47QUFDSDtBQUNKLEdBVkQsQ0FVRSxPQUFPYSxDQUFQLEVBQVU7QUFDUixRQUFJQSxDQUFDLENBQUNDLE9BQUYsSUFBYUQsQ0FBQyxDQUFDQyxPQUFGLENBQVVDLFVBQVYsQ0FBcUIsY0FBckIsQ0FBakIsRUFBdUQ7QUFDbkQsWUFBTSxJQUFJLEtBQUtDLE9BQVQsQ0FBaUIsS0FBS0MsU0FBTCxDQUFlQyxTQUFmLENBQXlCQyxnQkFBMUMsRUFBNEROLENBQUMsQ0FBQ0MsT0FBOUQsQ0FBTjtBQUNIOztBQUNELFVBQU1ELENBQU47QUFDSDs7QUFDRCxRQUFNLEtBQUtPLG1CQUFMLEVBQU47QUFDSCxDQXZCRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEBzdW1tYXJ5IFNlbGVjdHMgYW4gb3B0aW9uIGZyb20gYSBkcm9wLWRvd24gbGlzdCB1c2luZyBhbiBvcHRpb24gbG9jYXRvci4gVGhpcyBjb21tYW5kIHdvcmtzXHJcbiAqICAgICAgICAgIHdpdGggbXVsdGlwbGUtY2hvaWNlIGxpc3RzIGFzIHdlbGwuXHJcbiAqIEBkZXNjcmlwdGlvbiBPcHRpb24gbG9jYXRvciBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgKE5vIHByZWZpeCBpcyBzYW1lIGFzIGxhYmVsIG1hdGNoaW5nKTogIFxyXG4gKiAgICAgICAgICAgICAgLSBgbGFiZWw9U1RSSU5HYCAtIE1hdGNoZXMgb3B0aW9uIGJhc2VkIG9uIHRoZSB2aXNpYmxlIHRleHQuICBcclxuICogICAgICAgICAgICAgIC0gYHZhbHVlPVNUUklOR2AgLSBNYXRjaGVzIG9wdGlvbiBiYXNlZCBvbiBpdHMgdmFsdWUuICBcclxuICogICAgICAgICAgICAgIC0gYGluZGV4PVNUUklOR2AgLSBNYXRjaGVzIG9wdGlvbiBiYXNlZCBvbiBpdHMgaW5kZXguIFRoZSBpbmRleCBpcyAwLWJhc2VkLlxyXG4gKiBAZnVuY3Rpb24gc2VsZWN0XHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZWxlY3RMb2NhdG9yIC0gQW4gZWxlbWVudCBsb2NhdG9yIGlkZW50aWZ5aW5nIGEgZHJvcC1kb3duIG1lbnUuXHJcbiAqIEBwYXJhbSB7U3RyaW5nfSBvcHRpb25Mb2NhdG9yIC0gQW4gb3B0aW9uIGxvY2F0b3IuXHJcbiAqIEBwYXJhbSB7TnVtYmVyPX0gdGltZW91dCAtIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0IGlzIDYwIHNlY29uZHMuXHJcbiAqIEBleGFtcGxlIDxjYXB0aW9uPltqYXZhc2NyaXB0XSBVc2FnZSBleGFtcGxlPC9jYXB0aW9uPlxyXG4gKiB3ZWIuaW5pdCgpOy8vT3BlbnMgYnJvd3NlciBzZXNzaW9uLlxyXG4gKiB3ZWIub3BlbihcInd3dy55b3Vyd2Vic2l0ZS5jb21cIik7Ly8gT3BlbnMgYSB3ZWJzaXRlLlxyXG4gKiB3ZWIuc2VsZWN0KFwiaWQ9U2VsZWN0aW9uXCIsXCJsYWJlbD1Vbml0ZWQgU3RhdGVzXCIpOy8vIFNlbGVjdHMgYW4gb3B0aW9uIGZyb20gYSBsaXN0LiBcclxuICovXHJcbm1vZHVsZS5leHBvcnRzID0gYXN5bmMgZnVuY3Rpb24oc2VsZWN0TG9jYXRvciwgb3B0aW9uTG9jYXRvciwgdGltZW91dCkge1xyXG4gICAgdGhpcy5oZWxwZXJzLmFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmcob3B0aW9uTG9jYXRvciwgJ29wdGlvbkxvY2F0b3InKTtcclxuICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudFRpbWVvdXQodGltZW91dCwgJ3RpbWVvdXQnKTtcclxuXHJcbiAgICB2YXIgZWwgPSBhd2FpdCB0aGlzLmhlbHBlcnMuZ2V0RWxlbWVudChzZWxlY3RMb2NhdG9yLCBmYWxzZSwgdGltZW91dCk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgICBpZiAob3B0aW9uTG9jYXRvci5pbmRleE9mKCd2YWx1ZT0nKSA9PT0gMCkge1xyXG4gICAgICAgICAgICBhd2FpdCBlbC5zZWxlY3RCeUF0dHJpYnV0ZSgndmFsdWUnLCBvcHRpb25Mb2NhdG9yLnN1YnN0cmluZygndmFsdWU9Jy5sZW5ndGgpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbkxvY2F0b3IuaW5kZXhPZignaW5kZXg9JykgPT09IDApIHtcclxuICAgICAgICAgICAgYXdhaXQgZWwuc2VsZWN0QnlJbmRleChvcHRpb25Mb2NhdG9yLnN1YnN0cmluZygnaW5kZXg9Jy5sZW5ndGgpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKG9wdGlvbkxvY2F0b3IuaW5kZXhPZignbGFiZWw9JykgPT09IDApIHtcclxuICAgICAgICAgICAgYXdhaXQgZWwuc2VsZWN0QnlWaXNpYmxlVGV4dChvcHRpb25Mb2NhdG9yLnN1YnN0cmluZygnbGFiZWw9Jy5sZW5ndGgpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBhd2FpdCBlbC5zZWxlY3RCeVZpc2libGVUZXh0KG9wdGlvbkxvY2F0b3IpO1xyXG4gICAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBpZiAoZS5tZXNzYWdlICYmIGUubWVzc2FnZS5zdGFydHNXaXRoKCdPcHRpb24gd2l0aCAnKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgdGhpcy5PeEVycm9yKHRoaXMuZXJySGVscGVyLmVycm9yQ29kZS5PUFRJT05fTk9UX0ZPVU5ELCBlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aHJvdyBlO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5jaGVja1dhaXRGb3JBbmd1bGFyKCk7XHJcbn07XHJcbiJdfQ==
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("source-map-support/register");
|
|
4
|
-
|
|
5
|
-
/*
|
|
6
|
-
* Copyright (C) 2015-present CloudBeat Limited
|
|
7
|
-
*
|
|
8
|
-
* This program is free software: you can redistribute it and/or modify
|
|
9
|
-
* it under the terms of the GNU General Public License as published by
|
|
10
|
-
* the Free Software Foundation, either version 3 of the License, or
|
|
11
|
-
* (at your option) any later version.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @summary Selects a frame or an iframe within the current window.
|
|
16
|
-
* @description Available frame locators:
|
|
17
|
-
* - `'parent'` - Select parent frame.
|
|
18
|
-
* - `'top'` - Select top window.
|
|
19
|
-
* - `NUMBER` - Select frame by its 0-based index.
|
|
20
|
-
* - `LOCATOR` - Locator identifying the frame (relative to the top window).
|
|
21
|
-
* Multiple locators can be passed in order to switch between nested frames.
|
|
22
|
-
* @function selectFrame
|
|
23
|
-
* @param {...String|Number} frameLocator - A locator identifying the frame or iframe. Or a series
|
|
24
|
-
* of locators.
|
|
25
|
-
* @example <caption>[javascript] Usage example</caption>
|
|
26
|
-
* web.init();//Opens browser session.
|
|
27
|
-
* web.open("www.yourwebsite.com");
|
|
28
|
-
* web.selectFrame("//iframe[@id='frame1']", "//iframe[@id='nested_frame']");
|
|
29
|
-
* web.click("id=SaveButton");//Clicks on element that exists in the second iframe
|
|
30
|
-
*/
|
|
31
|
-
module.exports = async function (frameLocator) {
|
|
32
|
-
if (frameLocator === 'parent') {
|
|
33
|
-
// parent
|
|
34
|
-
await this.driver.switchToParentFrame();
|
|
35
|
-
} else if (frameLocator === 'top') {
|
|
36
|
-
// top
|
|
37
|
-
await this.driver.switchToFrame(null);
|
|
38
|
-
} else if (!isNaN(frameLocator)) {
|
|
39
|
-
// frame index
|
|
40
|
-
await this.driver.switchToFrame(frameLocator);
|
|
41
|
-
} else {
|
|
42
|
-
// frame locator(s)
|
|
43
|
-
await this.driver.switchToFrame(null);
|
|
44
|
-
|
|
45
|
-
for (var i = 0; i < arguments.length; i++) {
|
|
46
|
-
var locator = arguments[i];
|
|
47
|
-
var el = await this.helpers.getElement(locator);
|
|
48
|
-
await this.driver.switchToFrame(el);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS13ZWIvY29tbWFuZHMvc2VsZWN0RnJhbWUuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsImZyYW1lTG9jYXRvciIsImRyaXZlciIsInN3aXRjaFRvUGFyZW50RnJhbWUiLCJzd2l0Y2hUb0ZyYW1lIiwiaXNOYU4iLCJpIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwibG9jYXRvciIsImVsIiwiaGVscGVycyIsImdldEVsZW1lbnQiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLGdCQUFlQyxZQUFmLEVBQTZCO0FBQzFDLE1BQUlBLFlBQVksS0FBSyxRQUFyQixFQUErQjtBQUFpQjtBQUM1QyxVQUFNLEtBQUtDLE1BQUwsQ0FBWUMsbUJBQVosRUFBTjtBQUNILEdBRkQsTUFFTyxJQUFJRixZQUFZLEtBQUssS0FBckIsRUFBNEI7QUFBYTtBQUM1QyxVQUFNLEtBQUtDLE1BQUwsQ0FBWUUsYUFBWixDQUEwQixJQUExQixDQUFOO0FBQ0gsR0FGTSxNQUVBLElBQUksQ0FBQ0MsS0FBSyxDQUFDSixZQUFELENBQVYsRUFBMEI7QUFBZTtBQUM1QyxVQUFNLEtBQUtDLE1BQUwsQ0FBWUUsYUFBWixDQUEwQkgsWUFBMUIsQ0FBTjtBQUNILEdBRk0sTUFFQTtBQUF5QztBQUM1QyxVQUFNLEtBQUtDLE1BQUwsQ0FBWUUsYUFBWixDQUEwQixJQUExQixDQUFOOztBQUNBLFNBQUssSUFBSUUsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0MsU0FBUyxDQUFDQyxNQUE5QixFQUFzQ0YsQ0FBQyxFQUF2QyxFQUEyQztBQUN2QyxVQUFJRyxPQUFPLEdBQUdGLFNBQVMsQ0FBQ0QsQ0FBRCxDQUF2QjtBQUNBLFVBQUlJLEVBQUUsR0FBRyxNQUFNLEtBQUtDLE9BQUwsQ0FBYUMsVUFBYixDQUF3QkgsT0FBeEIsQ0FBZjtBQUNBLFlBQU0sS0FBS1AsTUFBTCxDQUFZRSxhQUFaLENBQTBCTSxFQUExQixDQUFOO0FBQ0g7QUFDSjtBQUNKLENBZkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAc3VtbWFyeSBTZWxlY3RzIGEgZnJhbWUgb3IgYW4gaWZyYW1lIHdpdGhpbiB0aGUgY3VycmVudCB3aW5kb3cuXHJcbiAqIEBkZXNjcmlwdGlvbiBBdmFpbGFibGUgZnJhbWUgbG9jYXRvcnM6ICBcclxuICogICAgICAgICAgICAgIC0gYCdwYXJlbnQnYCAtIFNlbGVjdCBwYXJlbnQgZnJhbWUuICBcclxuICogICAgICAgICAgICAgIC0gYCd0b3AnYCAtIFNlbGVjdCB0b3Agd2luZG93LiAgXHJcbiAqICAgICAgICAgICAgICAtIGBOVU1CRVJgIC0gU2VsZWN0IGZyYW1lIGJ5IGl0cyAwLWJhc2VkIGluZGV4LiAgXHJcbiAqICAgICAgICAgICAgICAtIGBMT0NBVE9SYCAtIExvY2F0b3IgaWRlbnRpZnlpbmcgdGhlIGZyYW1lIChyZWxhdGl2ZSB0byB0aGUgdG9wIHdpbmRvdykuXHJcbiAqICAgICAgICAgICAgICBNdWx0aXBsZSBsb2NhdG9ycyBjYW4gYmUgcGFzc2VkIGluIG9yZGVyIHRvIHN3aXRjaCBiZXR3ZWVuIG5lc3RlZCBmcmFtZXMuXHJcbiAqIEBmdW5jdGlvbiBzZWxlY3RGcmFtZVxyXG4gKiBAcGFyYW0gey4uLlN0cmluZ3xOdW1iZXJ9IGZyYW1lTG9jYXRvciAtIEEgbG9jYXRvciBpZGVudGlmeWluZyB0aGUgZnJhbWUgb3IgaWZyYW1lLiBPciBhIHNlcmllcyBcclxuICogICAgICAgICBvZiBsb2NhdG9ycy5cclxuICogQGV4YW1wbGUgPGNhcHRpb24+W2phdmFzY3JpcHRdIFVzYWdlIGV4YW1wbGU8L2NhcHRpb24+XHJcbiAqIHdlYi5pbml0KCk7Ly9PcGVucyBicm93c2VyIHNlc3Npb24uXHJcbiAqIHdlYi5vcGVuKFwid3d3LnlvdXJ3ZWJzaXRlLmNvbVwiKTtcclxuICogd2ViLnNlbGVjdEZyYW1lKFwiLy9pZnJhbWVbQGlkPSdmcmFtZTEnXVwiLCBcIi8vaWZyYW1lW0BpZD0nbmVzdGVkX2ZyYW1lJ11cIik7XHJcbiAqIHdlYi5jbGljayhcImlkPVNhdmVCdXR0b25cIik7Ly9DbGlja3Mgb24gZWxlbWVudCB0aGF0IGV4aXN0cyBpbiB0aGUgc2Vjb25kIGlmcmFtZVxyXG4gKi9cclxubW9kdWxlLmV4cG9ydHMgPSBhc3luYyBmdW5jdGlvbihmcmFtZUxvY2F0b3IpIHtcclxuICAgIGlmIChmcmFtZUxvY2F0b3IgPT09ICdwYXJlbnQnKSB7ICAgICAgICAgICAgICAgIC8vIHBhcmVudFxyXG4gICAgICAgIGF3YWl0IHRoaXMuZHJpdmVyLnN3aXRjaFRvUGFyZW50RnJhbWUoKTtcclxuICAgIH0gZWxzZSBpZiAoZnJhbWVMb2NhdG9yID09PSAndG9wJykgeyAgICAgICAgICAgIC8vIHRvcFxyXG4gICAgICAgIGF3YWl0IHRoaXMuZHJpdmVyLnN3aXRjaFRvRnJhbWUobnVsbCk7XHJcbiAgICB9IGVsc2UgaWYgKCFpc05hTihmcmFtZUxvY2F0b3IpKSB7ICAgICAgICAgICAgICAvLyBmcmFtZSBpbmRleFxyXG4gICAgICAgIGF3YWl0IHRoaXMuZHJpdmVyLnN3aXRjaFRvRnJhbWUoZnJhbWVMb2NhdG9yKTtcclxuICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyYW1lIGxvY2F0b3IocylcclxuICAgICAgICBhd2FpdCB0aGlzLmRyaXZlci5zd2l0Y2hUb0ZyYW1lKG51bGwpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBsb2NhdG9yID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICB2YXIgZWwgPSBhd2FpdCB0aGlzLmhlbHBlcnMuZ2V0RWxlbWVudChsb2NhdG9yKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5kcml2ZXIuc3dpdGNoVG9GcmFtZShlbCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG4iXX0=
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("source-map-support/register");
|
|
4
|
-
|
|
5
|
-
/*
|
|
6
|
-
* Copyright (C) 2015-present CloudBeat Limited
|
|
7
|
-
*
|
|
8
|
-
* This program is free software: you can redistribute it and/or modify
|
|
9
|
-
* it under the terms of the GNU General Public License as published by
|
|
10
|
-
* the Free Software Foundation, either version 3 of the License, or
|
|
11
|
-
* (at your option) any later version.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @summary Selects window. Once window has been selected, all commands go to that window.
|
|
16
|
-
* @description `windowLocator` can be:
|
|
17
|
-
* - `title=TITLE` Switch to the first window which matches the specified title. `TITLE` can be any of
|
|
18
|
-
* the supported string matching patterns (see top of the page). When using title locator, this command
|
|
19
|
-
* will wait for the window to appear first similarly to `waitForWindow` command.
|
|
20
|
-
* - `url=URL` Switch to the first window which matches the specified URL. `URL` can be any of
|
|
21
|
-
* the supported string matching patterns (see top of the page). When using url locator, this command
|
|
22
|
-
* will wait for the window to appear first similarly to `waitForWindow` command.
|
|
23
|
-
* - `windowHandle` Switch to a window using its unique handle.
|
|
24
|
-
* @function selectWindow
|
|
25
|
-
* @param {String=} windowLocator - Window locator.
|
|
26
|
-
* @param {Number=} timeout - Timeout in milliseconds when using 'title' window locating strategy.
|
|
27
|
-
* Default is 60 seconds.
|
|
28
|
-
* @return {String} windowHandle of the previously selected window.
|
|
29
|
-
* @example <caption>[javascript] Usage example</caption>
|
|
30
|
-
* web.init();//Opens browser session.
|
|
31
|
-
* web.open("www.yourwebsite.com");// Opens a website.
|
|
32
|
-
* web.selectWindow("title=Website");// Selects and focus a window.
|
|
33
|
-
*/
|
|
34
|
-
module.exports = async function (windowLocator, timeout) {
|
|
35
|
-
this.helpers.assertArgument(windowLocator, 'windowLocator');
|
|
36
|
-
var currentHandle;
|
|
37
|
-
var currentHandleTitle;
|
|
38
|
-
var currentHandleUrl;
|
|
39
|
-
var swithToCurrentHandleErrorMsg = 'Unable to switch to previous selected window'; // getWindowHandle() could possibly fail if there is no active window,
|
|
40
|
-
// so we select the last opened one in such case
|
|
41
|
-
|
|
42
|
-
try {
|
|
43
|
-
currentHandle = await this.driver.getWindowHandle();
|
|
44
|
-
} catch (err) {
|
|
45
|
-
var wnds = await this.driver.getWindowHandles();
|
|
46
|
-
await this.driver.switchToWindow(wnds[wnds.length - 1]);
|
|
47
|
-
currentHandle = await this.driver.getWindowHandle();
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (currentHandle) {
|
|
51
|
-
currentHandleTitle = await this.driver.getTitle();
|
|
52
|
-
currentHandleUrl = await this.driver.getUrl();
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
var windowHandles;
|
|
56
|
-
|
|
57
|
-
if (windowLocator.indexOf('title=') === 0) {
|
|
58
|
-
let pattern = windowLocator.substring('title='.length);
|
|
59
|
-
let start = new Date().getTime();
|
|
60
|
-
timeout = !timeout ? this.waitForTimeout : timeout;
|
|
61
|
-
|
|
62
|
-
while (new Date().getTime() - start < timeout) {
|
|
63
|
-
windowHandles = await this.driver.getWindowHandles();
|
|
64
|
-
|
|
65
|
-
for (let i = 0; i < windowHandles.length; i++) {
|
|
66
|
-
let handle = windowHandles[i];
|
|
67
|
-
|
|
68
|
-
try {
|
|
69
|
-
await this.driver.switchToWindow(handle);
|
|
70
|
-
} catch (err) {
|
|
71
|
-
// in case window was closed
|
|
72
|
-
continue;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
let title = await this.driver.getTitle();
|
|
76
|
-
|
|
77
|
-
if (this.helpers.matchPattern(title, pattern)) {
|
|
78
|
-
return currentHandle;
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
this.pause(1000);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
try {
|
|
86
|
-
// if window not found - switch to original one and throw
|
|
87
|
-
await this.driver.switchToWindow(currentHandle);
|
|
88
|
-
} catch (err) {
|
|
89
|
-
// in case window was closed
|
|
90
|
-
if (currentHandleTitle) {
|
|
91
|
-
swithToCurrentHandleErrorMsg += `: ${currentHandleTitle}`;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
throw new this.OxError(this.errHelper.errorCode.WINDOW_NOT_FOUND, swithToCurrentHandleErrorMsg);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
throw new this.OxError(this.errHelper.errorCode.WINDOW_NOT_FOUND, `Unable to find window: ${windowLocator}`);
|
|
98
|
-
} else if (windowLocator.indexOf('url=') === 0) {
|
|
99
|
-
let pattern = windowLocator.substring('url='.length);
|
|
100
|
-
let start = new Date().getTime();
|
|
101
|
-
timeout = !timeout ? this.waitForTimeout : timeout;
|
|
102
|
-
|
|
103
|
-
while (new Date().getTime() - start < timeout) {
|
|
104
|
-
windowHandles = await this.driver.getWindowHandles();
|
|
105
|
-
|
|
106
|
-
for (let i = 0; i < windowHandles.length; i++) {
|
|
107
|
-
let handle = windowHandles[i];
|
|
108
|
-
|
|
109
|
-
try {
|
|
110
|
-
await this.driver.switchToWindow(handle);
|
|
111
|
-
} catch (err) {
|
|
112
|
-
// in case window was closed
|
|
113
|
-
continue;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
let url = await this.driver.getUrl();
|
|
117
|
-
|
|
118
|
-
if (this.helpers.matchPattern(url, pattern)) {
|
|
119
|
-
return currentHandle;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
this.pause(1000);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
try {
|
|
127
|
-
// if window not found - switch to original one and throw
|
|
128
|
-
await this.driver.switchToWindow(currentHandle);
|
|
129
|
-
} catch (err) {
|
|
130
|
-
if (currentHandleUrl) {
|
|
131
|
-
swithToCurrentHandleErrorMsg += `: ${currentHandleUrl}`;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
throw new this.OxError(this.errHelper.errorCode.WINDOW_NOT_FOUND, swithToCurrentHandleErrorMsg);
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
throw new this.OxError(this.errHelper.errorCode.WINDOW_NOT_FOUND, `Unable to find window: ${windowLocator}`);
|
|
138
|
-
} else {
|
|
139
|
-
try {
|
|
140
|
-
await this.driver.switchToWindow(windowLocator);
|
|
141
|
-
} catch (err) {
|
|
142
|
-
throw new this.OxError(this.errHelper.errorCode.WINDOW_NOT_FOUND, swithToCurrentHandleErrorMsg);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
return currentHandle;
|
|
147
|
-
};
|
|
148
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS13ZWIvY29tbWFuZHMvc2VsZWN0V2luZG93LmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJ3aW5kb3dMb2NhdG9yIiwidGltZW91dCIsImhlbHBlcnMiLCJhc3NlcnRBcmd1bWVudCIsImN1cnJlbnRIYW5kbGUiLCJjdXJyZW50SGFuZGxlVGl0bGUiLCJjdXJyZW50SGFuZGxlVXJsIiwic3dpdGhUb0N1cnJlbnRIYW5kbGVFcnJvck1zZyIsImRyaXZlciIsImdldFdpbmRvd0hhbmRsZSIsImVyciIsInduZHMiLCJnZXRXaW5kb3dIYW5kbGVzIiwic3dpdGNoVG9XaW5kb3ciLCJsZW5ndGgiLCJnZXRUaXRsZSIsImdldFVybCIsIndpbmRvd0hhbmRsZXMiLCJpbmRleE9mIiwicGF0dGVybiIsInN1YnN0cmluZyIsInN0YXJ0IiwiRGF0ZSIsImdldFRpbWUiLCJ3YWl0Rm9yVGltZW91dCIsImkiLCJoYW5kbGUiLCJ0aXRsZSIsIm1hdGNoUGF0dGVybiIsInBhdXNlIiwiT3hFcnJvciIsImVyckhlbHBlciIsImVycm9yQ29kZSIsIldJTkRPV19OT1RfRk9VTkQiLCJ1cmwiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLGdCQUFlQyxhQUFmLEVBQThCQyxPQUE5QixFQUF1QztBQUNwRCxPQUFLQyxPQUFMLENBQWFDLGNBQWIsQ0FBNEJILGFBQTVCLEVBQTJDLGVBQTNDO0FBQ0EsTUFBSUksYUFBSjtBQUNBLE1BQUlDLGtCQUFKO0FBQ0EsTUFBSUMsZ0JBQUo7QUFDQSxNQUFJQyw0QkFBNEIsR0FBRyw4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QUFmLENBQXlCQyxnQkFBMUMsRUFBNEQxQiw0QkFBNUQsQ0FBTjtBQUNIOztBQUNELFVBQU0sSUFBSSxLQUFLdUIsT0FBVCxDQUFpQixLQUFLQyxTQUFMLENBQWVDLFNBQWYsQ0FBeUJDLGdCQUExQyxFQUE2RCwwQkFBeUJqQyxhQUFjLEVBQXBHLENBQU47QUFDSCxHQS9CTSxNQStCQTtBQUNILFFBQUk7QUFDQSxZQUFNLEtBQUtRLE1BQUwsQ0FBWUssY0FBWixDQUEyQmIsYUFBM0IsQ0FBTjtBQUNILEtBRkQsQ0FFRSxPQUFPVSxHQUFQLEVBQVk7QUFDVixZQUFNLElBQUksS0FBS29CLE9BQVQsQ0FBaUIsS0FBS0MsU0FBTCxDQUFlQyxTQUFmLENBQXlCQyxnQkFBMUMsRUFBNEQxQiw0QkFBNUQsQ0FBTjtBQUNIO0FBQ0o7O0FBRUQsU0FBT0gsYUFBUDtBQUNILENBaEdEIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogQHN1bW1hcnkgU2VsZWN0cyB3aW5kb3cuIE9uY2Ugd2luZG93IGhhcyBiZWVuIHNlbGVjdGVkLCBhbGwgY29tbWFuZHMgZ28gdG8gdGhhdCB3aW5kb3cuXHJcbiAqIEBkZXNjcmlwdGlvbiBgd2luZG93TG9jYXRvcmAgY2FuIGJlOiAgXHJcbiAqIC0gYHRpdGxlPVRJVExFYCBTd2l0Y2ggdG8gdGhlIGZpcnN0IHdpbmRvdyB3aGljaCBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgdGl0bGUuIGBUSVRMRWAgY2FuIGJlIGFueSBvZlxyXG4gKiB0aGUgc3VwcG9ydGVkIHN0cmluZyBtYXRjaGluZyBwYXR0ZXJucyAoc2VlIHRvcCBvZiB0aGUgcGFnZSkuIFdoZW4gdXNpbmcgdGl0bGUgbG9jYXRvciwgdGhpcyBjb21tYW5kXHJcbiAqIHdpbGwgd2FpdCBmb3IgdGhlIHdpbmRvdyB0byBhcHBlYXIgZmlyc3Qgc2ltaWxhcmx5IHRvIGB3YWl0Rm9yV2luZG93YCBjb21tYW5kLiAgXHJcbiAqIC0gYHVybD1VUkxgIFN3aXRjaCB0byB0aGUgZmlyc3Qgd2luZG93IHdoaWNoIG1hdGNoZXMgdGhlIHNwZWNpZmllZCBVUkwuIGBVUkxgIGNhbiBiZSBhbnkgb2ZcclxuICogdGhlIHN1cHBvcnRlZCBzdHJpbmcgbWF0Y2hpbmcgcGF0dGVybnMgKHNlZSB0b3Agb2YgdGhlIHBhZ2UpLiBXaGVuIHVzaW5nIHVybCBsb2NhdG9yLCB0aGlzIGNvbW1hbmRcclxuICogd2lsbCB3YWl0IGZvciB0aGUgd2luZG93IHRvIGFwcGVhciBmaXJzdCBzaW1pbGFybHkgdG8gYHdhaXRGb3JXaW5kb3dgIGNvbW1hbmQuICBcclxuICogLSBgd2luZG93SGFuZGxlYCBTd2l0Y2ggdG8gYSB3aW5kb3cgdXNpbmcgaXRzIHVuaXF1ZSBoYW5kbGUuXHJcbiAqIEBmdW5jdGlvbiBzZWxlY3RXaW5kb3dcclxuICogQHBhcmFtIHtTdHJpbmc9fSB3aW5kb3dMb2NhdG9yIC0gV2luZG93IGxvY2F0b3IuXHJcbiAqIEBwYXJhbSB7TnVtYmVyPX0gdGltZW91dCAtIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIHdoZW4gdXNpbmcgJ3RpdGxlJyB3aW5kb3cgbG9jYXRpbmcgc3RyYXRlZ3kuIFxyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCBpcyA2MCBzZWNvbmRzLlxyXG4gKiBAcmV0dXJuIHtTdHJpbmd9IHdpbmRvd0hhbmRsZSBvZiB0aGUgcHJldmlvdXNseSBzZWxlY3RlZCB3aW5kb3cuXHJcbiAqIEBleGFtcGxlIDxjYXB0aW9uPltqYXZhc2NyaXB0XSBVc2FnZSBleGFtcGxlPC9jYXB0aW9uPlxyXG4gKiB3ZWIuaW5pdCgpOy8vT3BlbnMgYnJvd3NlciBzZXNzaW9uLlxyXG4gKiB3ZWIub3BlbihcInd3dy55b3Vyd2Vic2l0ZS5jb21cIik7Ly8gT3BlbnMgYSB3ZWJzaXRlLlxyXG4gKiB3ZWIuc2VsZWN0V2luZG93KFwidGl0bGU9V2Vic2l0ZVwiKTsvLyBTZWxlY3RzIGFuZCBmb2N1cyBhIHdpbmRvdy4gXHJcbiAqL1xyXG5tb2R1bGUuZXhwb3J0cyA9IGFzeW5jIGZ1bmN0aW9uKHdpbmRvd0xvY2F0b3IsIHRpbWVvdXQpIHtcclxuICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudCh3aW5kb3dMb2NhdG9yLCAnd2luZG93TG9jYXRvcicpO1xyXG4gICAgdmFyIGN1cnJlbnRIYW5kbGU7XHJcbiAgICB2YXIgY3VycmVudEhhbmRsZVRpdGxlO1xyXG4gICAgdmFyIGN1cnJlbnRIYW5kbGVVcmw7XHJcbiAgICB2YXIgc3dpdGhUb0N1cnJlbnRIYW5kbGVFcnJvck1zZyA9ICdVbmFibGUgdG8gc3dpdGNoIHRvIHByZXZpb3VzIHNlbGVjdGVkIHdpbmRvdyc7XHJcblxyXG4gICAgLy8gZ2V0V2luZG93SGFuZGxlKCkgY291bGQgcG9zc2libHkgZmFpbCBpZiB0aGVyZSBpcyBubyBhY3RpdmUgd2luZG93LFxyXG4gICAgLy8gc28gd2Ugc2VsZWN0IHRoZSBsYXN0IG9wZW5lZCBvbmUgaW4gc3VjaCBjYXNlXHJcbiAgICB0cnkge1xyXG4gICAgICAgIGN1cnJlbnRIYW5kbGUgPSBhd2FpdCB0aGlzLmRyaXZlci5nZXRXaW5kb3dIYW5kbGUoKTtcclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIHZhciB3bmRzID0gYXdhaXQgdGhpcy5kcml2ZXIuZ2V0V2luZG93SGFuZGxlcygpO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZHJpdmVyLnN3aXRjaFRvV2luZG93KHduZHNbd25kcy5sZW5ndGggLSAxXSk7XHJcbiAgICAgICAgY3VycmVudEhhbmRsZSA9IGF3YWl0IHRoaXMuZHJpdmVyLmdldFdpbmRvd0hhbmRsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChjdXJyZW50SGFuZGxlKSB7XHJcbiAgICAgICAgY3VycmVudEhhbmRsZVRpdGxlID0gYXdhaXQgdGhpcy5kcml2ZXIuZ2V0VGl0bGUoKTtcclxuICAgICAgICBjdXJyZW50SGFuZGxlVXJsID0gYXdhaXQgdGhpcy5kcml2ZXIuZ2V0VXJsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIHdpbmRvd0hhbmRsZXM7XHJcbiAgICBpZiAod2luZG93TG9jYXRvci5pbmRleE9mKCd0aXRsZT0nKSA9PT0gMCkge1xyXG4gICAgICAgIGxldCBwYXR0ZXJuID0gd2luZG93TG9jYXRvci5zdWJzdHJpbmcoJ3RpdGxlPScubGVuZ3RoKTtcclxuICAgICAgICBsZXQgc3RhcnQgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xyXG4gICAgICAgIHRpbWVvdXQgPSAhdGltZW91dCA/IHRoaXMud2FpdEZvclRpbWVvdXQgOiB0aW1lb3V0O1xyXG4gICAgICAgIHdoaWxlICgobmV3IERhdGUoKSkuZ2V0VGltZSgpIC0gc3RhcnQgPCB0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgIHdpbmRvd0hhbmRsZXMgPSBhd2FpdCB0aGlzLmRyaXZlci5nZXRXaW5kb3dIYW5kbGVzKCk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd2luZG93SGFuZGxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGhhbmRsZSA9IHdpbmRvd0hhbmRsZXNbaV07XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZHJpdmVyLnN3aXRjaFRvV2luZG93KGhhbmRsZSk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHsgLy8gaW4gY2FzZSB3aW5kb3cgd2FzIGNsb3NlZFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gYXdhaXQgdGhpcy5kcml2ZXIuZ2V0VGl0bGUoKTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmhlbHBlcnMubWF0Y2hQYXR0ZXJuKHRpdGxlLCBwYXR0ZXJuKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50SGFuZGxlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMucGF1c2UoMTAwMCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAvLyBpZiB3aW5kb3cgbm90IGZvdW5kIC0gc3dpdGNoIHRvIG9yaWdpbmFsIG9uZSBhbmQgdGhyb3dcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5kcml2ZXIuc3dpdGNoVG9XaW5kb3coY3VycmVudEhhbmRsZSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7IC8vIGluIGNhc2Ugd2luZG93IHdhcyBjbG9zZWRcclxuXHJcbiAgICAgICAgICAgIGlmIChjdXJyZW50SGFuZGxlVGl0bGUpIHtcclxuICAgICAgICAgICAgICAgIHN3aXRoVG9DdXJyZW50SGFuZGxlRXJyb3JNc2cgKz0gYDogJHtjdXJyZW50SGFuZGxlVGl0bGV9YDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhyb3cgbmV3IHRoaXMuT3hFcnJvcih0aGlzLmVyckhlbHBlci5lcnJvckNvZGUuV0lORE9XX05PVF9GT1VORCwgc3dpdGhUb0N1cnJlbnRIYW5kbGVFcnJvck1zZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRocm93IG5ldyB0aGlzLk94RXJyb3IodGhpcy5lcnJIZWxwZXIuZXJyb3JDb2RlLldJTkRPV19OT1RfRk9VTkQsIGBVbmFibGUgdG8gZmluZCB3aW5kb3c6ICR7d2luZG93TG9jYXRvcn1gKTtcclxuICAgIH0gZWxzZSBpZiAod2luZG93TG9jYXRvci5pbmRleE9mKCd1cmw9JykgPT09IDApIHtcclxuICAgICAgICBsZXQgcGF0dGVybiA9IHdpbmRvd0xvY2F0b3Iuc3Vic3RyaW5nKCd1cmw9Jy5sZW5ndGgpO1xyXG4gICAgICAgIGxldCBzdGFydCA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgdGltZW91dCA9ICF0aW1lb3V0ID8gdGhpcy53YWl0Rm9yVGltZW91dCA6IHRpbWVvdXQ7XHJcbiAgICAgICAgd2hpbGUgKChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgLSBzdGFydCA8IHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgd2luZG93SGFuZGxlcyA9IGF3YWl0IHRoaXMuZHJpdmVyLmdldFdpbmRvd0hhbmRsZXMoKTtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aW5kb3dIYW5kbGVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgaGFuZGxlID0gd2luZG93SGFuZGxlc1tpXTtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5kcml2ZXIuc3dpdGNoVG9XaW5kb3coaGFuZGxlKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikgeyAvLyBpbiBjYXNlIHdpbmRvdyB3YXMgY2xvc2VkXHJcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgdXJsID0gYXdhaXQgdGhpcy5kcml2ZXIuZ2V0VXJsKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5oZWxwZXJzLm1hdGNoUGF0dGVybih1cmwsIHBhdHRlcm4pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRIYW5kbGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5wYXVzZSgxMDAwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIGlmIHdpbmRvdyBub3QgZm91bmQgLSBzd2l0Y2ggdG8gb3JpZ2luYWwgb25lIGFuZCB0aHJvd1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRyaXZlci5zd2l0Y2hUb1dpbmRvdyhjdXJyZW50SGFuZGxlKTtcclxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgaWYgKGN1cnJlbnRIYW5kbGVVcmwpIHtcclxuICAgICAgICAgICAgICAgIHN3aXRoVG9DdXJyZW50SGFuZGxlRXJyb3JNc2cgKz0gYDogJHtjdXJyZW50SGFuZGxlVXJsfWA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhyb3cgbmV3IHRoaXMuT3hFcnJvcih0aGlzLmVyckhlbHBlci5lcnJvckNvZGUuV0lORE9XX05PVF9GT1VORCwgc3dpdGhUb0N1cnJlbnRIYW5kbGVFcnJvck1zZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRocm93IG5ldyB0aGlzLk94RXJyb3IodGhpcy5lcnJIZWxwZXIuZXJyb3JDb2RlLldJTkRPV19OT1RfRk9VTkQsIGBVbmFibGUgdG8gZmluZCB3aW5kb3c6ICR7d2luZG93TG9jYXRvcn1gKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5kcml2ZXIuc3dpdGNoVG9XaW5kb3cod2luZG93TG9jYXRvcik7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyB0aGlzLk94RXJyb3IodGhpcy5lcnJIZWxwZXIuZXJyb3JDb2RlLldJTkRPV19OT1RfRk9VTkQsIHN3aXRoVG9DdXJyZW50SGFuZGxlRXJyb3JNc2cpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gY3VycmVudEhhbmRsZTtcclxufTsiXX0=
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("source-map-support/register");
|
|
4
|
-
|
|
5
|
-
/*
|
|
6
|
-
* Copyright (C) 2015-present CloudBeat Limited
|
|
7
|
-
*
|
|
8
|
-
* This program is free software: you can redistribute it and/or modify
|
|
9
|
-
* it under the terms of the GNU General Public License as published by
|
|
10
|
-
* the Free Software Foundation, either version 3 of the License, or
|
|
11
|
-
* (at your option) any later version.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @summary Send a sequence of keyboard strokes to the active window or element.
|
|
16
|
-
* @description Refer to [Key Codes](https://w3c.github.io/webdriver/#keyboard-actions)
|
|
17
|
-
* for the list of supported raw keyboard key codes.
|
|
18
|
-
* @function sendKeys
|
|
19
|
-
* @param {(String|String[])} value - Sequence of key strokes to send. Can be either a string or an
|
|
20
|
-
* array of strings for sending raw key codes.
|
|
21
|
-
* @example <caption>[javascript] Usage example</caption>
|
|
22
|
-
* web.init();//Opens browser session.
|
|
23
|
-
* web.open("www.yourwebsite.com");// Opens a website.
|
|
24
|
-
* web.sendKeys("Hello World");
|
|
25
|
-
* web.sendKeys(["Backspace", "Backspace", "Enter"]); // send two Backspace key codes and Enter.
|
|
26
|
-
* // Unicode representation can be used directly as well:
|
|
27
|
-
* web.sendKeys("Hello World\uE003\uE003\uE007");
|
|
28
|
-
*/
|
|
29
|
-
module.exports = async function (value) {
|
|
30
|
-
this.helpers.assertArgument(value);
|
|
31
|
-
var valArray = []; // try-catch is for OI-1049
|
|
32
|
-
|
|
33
|
-
try {
|
|
34
|
-
if (Array.isArray(value)) {
|
|
35
|
-
// array
|
|
36
|
-
// `instanceof Array` behaves strange when executed through vm.runInNewContext,
|
|
37
|
-
// it returns false for arrays and `driver.keys()` tests for arrays using `instaceof Array`
|
|
38
|
-
// thus we recreate the array.
|
|
39
|
-
// https://github.com/felixge/node-sandboxed-module/issues/13#issuecomment-299585213
|
|
40
|
-
for (var val of value) {
|
|
41
|
-
valArray.push(val);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
await this.driver.keys(valArray);
|
|
45
|
-
return;
|
|
46
|
-
} else {
|
|
47
|
-
// string
|
|
48
|
-
await this.driver.keys(value);
|
|
49
|
-
}
|
|
50
|
-
} catch (e) {
|
|
51
|
-
this.logger.warn('web.sendKeys error', e);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
await this.checkWaitForAngular();
|
|
55
|
-
};
|
|
56
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS13ZWIvY29tbWFuZHMvc2VuZEtleXMuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInZhbHVlIiwiaGVscGVycyIsImFzc2VydEFyZ3VtZW50IiwidmFsQXJyYXkiLCJBcnJheSIsImlzQXJyYXkiLCJ2YWwiLCJwdXNoIiwiZHJpdmVyIiwia2V5cyIsImUiLCJsb2dnZXIiLCJ3YXJuIiwiY2hlY2tXYWl0Rm9yQW5ndWxhciJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0FBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixnQkFBZUMsS0FBZixFQUFzQjtBQUNuQyxPQUFLQyxPQUFMLENBQWFDLGNBQWIsQ0FBNEJGLEtBQTVCO0FBRUEsTUFBSUcsUUFBUSxHQUFHLEVBQWYsQ0FIbUMsQ0FJbkM7O0FBQ0EsTUFBSTtBQUNBLFFBQUlDLEtBQUssQ0FBQ0MsT0FBTixDQUFjTCxLQUFkLENBQUosRUFBMEI7QUFBYztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQUssSUFBSU0sR0FBVCxJQUFnQk4sS0FBaEIsRUFBdUI7QUFDbkJHLFFBQUFBLFFBQVEsQ0FBQ0ksSUFBVCxDQUFjRCxHQUFkO0FBQ0g7O0FBQ0QsWUFBTSxLQUFLRSxNQUFMLENBQVlDLElBQVosQ0FBaUJOLFFBQWpCLENBQU47QUFDQTtBQUNILEtBVkQsTUFVTztBQUFpQztBQUNwQyxZQUFNLEtBQUtLLE1BQUwsQ0FBWUMsSUFBWixDQUFpQlQsS0FBakIsQ0FBTjtBQUNIO0FBQ0osR0FkRCxDQWNFLE9BQU9VLENBQVAsRUFBVTtBQUNSLFNBQUtDLE1BQUwsQ0FBWUMsSUFBWixDQUFpQixvQkFBakIsRUFBdUNGLENBQXZDO0FBQ0g7O0FBQ0QsUUFBTSxLQUFLRyxtQkFBTCxFQUFOO0FBQ0gsQ0F2QkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAc3VtbWFyeSBTZW5kIGEgc2VxdWVuY2Ugb2Yga2V5Ym9hcmQgc3Ryb2tlcyB0byB0aGUgYWN0aXZlIHdpbmRvdyBvciBlbGVtZW50LlxyXG4gKiBAZGVzY3JpcHRpb24gUmVmZXIgdG8gW0tleSBDb2Rlc10oaHR0cHM6Ly93M2MuZ2l0aHViLmlvL3dlYmRyaXZlci8ja2V5Ym9hcmQtYWN0aW9ucylcclxuICogICAgICAgICAgICAgIGZvciB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgcmF3IGtleWJvYXJkIGtleSBjb2Rlcy5cclxuICogQGZ1bmN0aW9uIHNlbmRLZXlzXHJcbiAqIEBwYXJhbSB7KFN0cmluZ3xTdHJpbmdbXSl9IHZhbHVlIC0gU2VxdWVuY2Ugb2Yga2V5IHN0cm9rZXMgdG8gc2VuZC4gQ2FuIGJlIGVpdGhlciBhIHN0cmluZyBvciBhbiBcclxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkgb2Ygc3RyaW5ncyBmb3Igc2VuZGluZyByYXcga2V5IGNvZGVzLlxyXG4gKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICogd2ViLmluaXQoKTsvL09wZW5zIGJyb3dzZXIgc2Vzc2lvbi5cclxuICogd2ViLm9wZW4oXCJ3d3cueW91cndlYnNpdGUuY29tXCIpOy8vIE9wZW5zIGEgd2Vic2l0ZS5cclxuICogd2ViLnNlbmRLZXlzKFwiSGVsbG8gV29ybGRcIik7XHJcbiAqIHdlYi5zZW5kS2V5cyhbXCJCYWNrc3BhY2VcIiwgXCJCYWNrc3BhY2VcIiwgXCJFbnRlclwiXSk7IC8vIHNlbmQgdHdvIEJhY2tzcGFjZSBrZXkgY29kZXMgYW5kIEVudGVyLlxyXG4gKiAvLyBVbmljb2RlIHJlcHJlc2VudGF0aW9uIGNhbiBiZSB1c2VkIGRpcmVjdGx5IGFzIHdlbGw6XHJcbiAqIHdlYi5zZW5kS2V5cyhcIkhlbGxvIFdvcmxkXFx1RTAwM1xcdUUwMDNcXHVFMDA3XCIpO1xyXG4qL1xyXG5tb2R1bGUuZXhwb3J0cyA9IGFzeW5jIGZ1bmN0aW9uKHZhbHVlKSB7XHJcbiAgICB0aGlzLmhlbHBlcnMuYXNzZXJ0QXJndW1lbnQodmFsdWUpO1xyXG5cclxuICAgIHZhciB2YWxBcnJheSA9IFtdO1xyXG4gICAgLy8gdHJ5LWNhdGNoIGlzIGZvciBPSS0xMDQ5XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkgeyAgICAgICAgICAgICAvLyBhcnJheVxyXG4gICAgICAgICAgICAvLyBgaW5zdGFuY2VvZiBBcnJheWAgYmVoYXZlcyBzdHJhbmdlIHdoZW4gZXhlY3V0ZWQgdGhyb3VnaCB2bS5ydW5Jbk5ld0NvbnRleHQsXHJcbiAgICAgICAgICAgIC8vIGl0IHJldHVybnMgZmFsc2UgZm9yIGFycmF5cyBhbmQgYGRyaXZlci5rZXlzKClgIHRlc3RzIGZvciBhcnJheXMgdXNpbmcgYGluc3RhY2VvZiBBcnJheWBcclxuICAgICAgICAgICAgLy8gdGh1cyB3ZSByZWNyZWF0ZSB0aGUgYXJyYXkuXHJcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mZWxpeGdlL25vZGUtc2FuZGJveGVkLW1vZHVsZS9pc3N1ZXMvMTMjaXNzdWVjb21tZW50LTI5OTU4NTIxM1xyXG4gICAgICAgICAgICBmb3IgKHZhciB2YWwgb2YgdmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIHZhbEFycmF5LnB1c2godmFsKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRyaXZlci5rZXlzKHZhbEFycmF5KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHJpbmdcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5kcml2ZXIua2V5cyh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIHRoaXMubG9nZ2VyLndhcm4oJ3dlYi5zZW5kS2V5cyBlcnJvcicsIGUpO1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5jaGVja1dhaXRGb3JBbmd1bGFyKCk7XHJcbn07XHJcbiJdfQ==
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("source-map-support/register");
|
|
4
|
-
|
|
5
|
-
/*
|
|
6
|
-
* Copyright (C) 2015-present CloudBeat Limited
|
|
7
|
-
*
|
|
8
|
-
* This program is free software: you can redistribute it and/or modify
|
|
9
|
-
* it under the terms of the GNU General Public License as published by
|
|
10
|
-
* the Free Software Foundation, either version 3 of the License, or
|
|
11
|
-
* (at your option) any later version.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @summary Wait for Angular based app will be loaded
|
|
16
|
-
* @function setAutoWaitForAngular
|
|
17
|
-
* @param {Boolean} autoWaitForAngular - new autoWait value. Dafault is false;
|
|
18
|
-
* @param {String=} rootSelector - Selector for root element, need only for Angular 1
|
|
19
|
-
* @param {Number=} timeout - Timeout in milliseconds. Default is 60 seconds.
|
|
20
|
-
* @example <caption>[javascript] Usage example</caption>
|
|
21
|
-
* web.init();
|
|
22
|
-
* web.open("www.yourwebsite.com");
|
|
23
|
-
* web.setAutoWaitForAngular(true);
|
|
24
|
-
*/
|
|
25
|
-
module.exports = function (autoWaitForAngular = false, rootSelector = '', timeout = 60 * 1000) {
|
|
26
|
-
this.helpers.assertArgumentBool(autoWaitForAngular, 'autoWaitForAngular');
|
|
27
|
-
this.helpers.assertArgumentTimeout(timeout, 'timeout');
|
|
28
|
-
this.helpers.assertArgumentString(rootSelector, 'rootSelector');
|
|
29
|
-
this.autoWaitForAngular = autoWaitForAngular;
|
|
30
|
-
this.autoWaitForAngularRootSelector = rootSelector;
|
|
31
|
-
this.autoWaitForAngularTimeout = timeout;
|
|
32
|
-
};
|
|
33
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS13ZWIvY29tbWFuZHMvc2V0QXV0b1dhaXRGb3JBbmd1bGFyLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJhdXRvV2FpdEZvckFuZ3VsYXIiLCJyb290U2VsZWN0b3IiLCJ0aW1lb3V0IiwiaGVscGVycyIsImFzc2VydEFyZ3VtZW50Qm9vbCIsImFzc2VydEFyZ3VtZW50VGltZW91dCIsImFzc2VydEFyZ3VtZW50U3RyaW5nIiwiYXV0b1dhaXRGb3JBbmd1bGFyUm9vdFNlbGVjdG9yIiwiYXV0b1dhaXRGb3JBbmd1bGFyVGltZW91dCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUIsVUFBU0Msa0JBQWtCLEdBQUcsS0FBOUIsRUFBcUNDLFlBQVksR0FBRyxFQUFwRCxFQUF3REMsT0FBTyxHQUFHLEtBQUcsSUFBckUsRUFBMkU7QUFDeEYsT0FBS0MsT0FBTCxDQUFhQyxrQkFBYixDQUFnQ0osa0JBQWhDLEVBQW9ELG9CQUFwRDtBQUNBLE9BQUtHLE9BQUwsQ0FBYUUscUJBQWIsQ0FBbUNILE9BQW5DLEVBQTRDLFNBQTVDO0FBQ0EsT0FBS0MsT0FBTCxDQUFhRyxvQkFBYixDQUFrQ0wsWUFBbEMsRUFBZ0QsY0FBaEQ7QUFFQSxPQUFLRCxrQkFBTCxHQUEwQkEsa0JBQTFCO0FBQ0EsT0FBS08sOEJBQUwsR0FBc0NOLFlBQXRDO0FBQ0EsT0FBS08seUJBQUwsR0FBaUNOLE9BQWpDO0FBQ0gsQ0FSRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEBzdW1tYXJ5IFdhaXQgZm9yIEFuZ3VsYXIgYmFzZWQgYXBwIHdpbGwgYmUgbG9hZGVkXHJcbiAqIEBmdW5jdGlvbiBzZXRBdXRvV2FpdEZvckFuZ3VsYXJcclxuICogQHBhcmFtIHtCb29sZWFufSBhdXRvV2FpdEZvckFuZ3VsYXIgLSBuZXcgYXV0b1dhaXQgdmFsdWUuIERhZmF1bHQgaXMgZmFsc2U7XHJcbiAqIEBwYXJhbSB7U3RyaW5nPX0gcm9vdFNlbGVjdG9yIC0gU2VsZWN0b3IgZm9yIHJvb3QgZWxlbWVudCwgbmVlZCBvbmx5IGZvciBBbmd1bGFyIDFcclxuICogQHBhcmFtIHtOdW1iZXI9fSB0aW1lb3V0IC0gVGltZW91dCBpbiBtaWxsaXNlY29uZHMuIERlZmF1bHQgaXMgNjAgc2Vjb25kcy5cclxuICogQGV4YW1wbGUgPGNhcHRpb24+W2phdmFzY3JpcHRdIFVzYWdlIGV4YW1wbGU8L2NhcHRpb24+XHJcbiAqIHdlYi5pbml0KCk7XHJcbiAqIHdlYi5vcGVuKFwid3d3LnlvdXJ3ZWJzaXRlLmNvbVwiKTtcclxuICogd2ViLnNldEF1dG9XYWl0Rm9yQW5ndWxhcih0cnVlKTtcclxuICovXHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGF1dG9XYWl0Rm9yQW5ndWxhciA9IGZhbHNlLCByb290U2VsZWN0b3IgPSAnJywgdGltZW91dCA9IDYwKjEwMDApIHtcclxuICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudEJvb2woYXV0b1dhaXRGb3JBbmd1bGFyLCAnYXV0b1dhaXRGb3JBbmd1bGFyJyk7XHJcbiAgICB0aGlzLmhlbHBlcnMuYXNzZXJ0QXJndW1lbnRUaW1lb3V0KHRpbWVvdXQsICd0aW1lb3V0Jyk7XHJcbiAgICB0aGlzLmhlbHBlcnMuYXNzZXJ0QXJndW1lbnRTdHJpbmcocm9vdFNlbGVjdG9yLCAncm9vdFNlbGVjdG9yJyk7XHJcblxyXG4gICAgdGhpcy5hdXRvV2FpdEZvckFuZ3VsYXIgPSBhdXRvV2FpdEZvckFuZ3VsYXI7XHJcbiAgICB0aGlzLmF1dG9XYWl0Rm9yQW5ndWxhclJvb3RTZWxlY3RvciA9IHJvb3RTZWxlY3RvcjtcclxuICAgIHRoaXMuYXV0b1dhaXRGb3JBbmd1bGFyVGltZW91dCA9IHRpbWVvdXQ7XHJcbn07Il19
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("source-map-support/register");
|
|
4
|
-
|
|
5
|
-
/*
|
|
6
|
-
* Copyright (C) 2015-present CloudBeat Limited
|
|
7
|
-
*
|
|
8
|
-
* This program is free software: you can redistribute it and/or modify
|
|
9
|
-
* it under the terms of the GNU General Public License as published by
|
|
10
|
-
* the Free Software Foundation, either version 3 of the License, or
|
|
11
|
-
* (at your option) any later version.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @summary Specifies the amount of time that Oxygen will wait for actions to complete.
|
|
16
|
-
* @description This includes the `open` command, `waitFor*` commands, and commands which wait
|
|
17
|
-
* for elements to appear in DOM or become visible before operating on them.
|
|
18
|
-
* If command wasn't able to complete within the specified period it will fail the
|
|
19
|
-
* test.
|
|
20
|
-
* The default time-out is 60 seconds.
|
|
21
|
-
* @function setTimeout
|
|
22
|
-
* @param {Number} timeout - A time-out in milliseconds.
|
|
23
|
-
* @example <caption>[javascript] Usage example</caption>
|
|
24
|
-
* web.init();//Opens browser session.
|
|
25
|
-
* web.open("www.yourwebsite.com");// Opens a website.
|
|
26
|
-
* web.setTimeout(60000);//Sets the time out to amount of milliseconds .
|
|
27
|
-
*/
|
|
28
|
-
module.exports = async function (timeout) {
|
|
29
|
-
this.helpers.assertArgumentNumberNonNegative(timeout, 'timeout');
|
|
30
|
-
this.waitForTimeout = timeout;
|
|
31
|
-
await this.helpers.setTimeoutImplicit(timeout);
|
|
32
|
-
};
|
|
33
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS13ZWIvY29tbWFuZHMvc2V0VGltZW91dC5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwidGltZW91dCIsImhlbHBlcnMiLCJhc3NlcnRBcmd1bWVudE51bWJlck5vbk5lZ2F0aXZlIiwid2FpdEZvclRpbWVvdXQiLCJzZXRUaW1lb3V0SW1wbGljaXQiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLGdCQUFlQyxPQUFmLEVBQXdCO0FBQ3JDLE9BQUtDLE9BQUwsQ0FBYUMsK0JBQWIsQ0FBNkNGLE9BQTdDLEVBQXNELFNBQXREO0FBQ0EsT0FBS0csY0FBTCxHQUFzQkgsT0FBdEI7QUFDQSxRQUFNLEtBQUtDLE9BQUwsQ0FBYUcsa0JBQWIsQ0FBZ0NKLE9BQWhDLENBQU47QUFDSCxDQUpEIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogQHN1bW1hcnkgU3BlY2lmaWVzIHRoZSBhbW91bnQgb2YgdGltZSB0aGF0IE94eWdlbiB3aWxsIHdhaXQgZm9yIGFjdGlvbnMgdG8gY29tcGxldGUuXHJcbiAqIEBkZXNjcmlwdGlvbiBUaGlzIGluY2x1ZGVzIHRoZSBgb3BlbmAgY29tbWFuZCwgYHdhaXRGb3IqYCBjb21tYW5kcywgYW5kIGNvbW1hbmRzIHdoaWNoIHdhaXRcclxuICogICAgICAgICAgICAgIGZvciBlbGVtZW50cyB0byBhcHBlYXIgaW4gRE9NIG9yIGJlY29tZSB2aXNpYmxlIGJlZm9yZSBvcGVyYXRpbmcgb24gdGhlbS4gIFxyXG4gKiAgICAgICAgICAgICAgSWYgY29tbWFuZCB3YXNuJ3QgYWJsZSB0byBjb21wbGV0ZSB3aXRoaW4gdGhlIHNwZWNpZmllZCBwZXJpb2QgaXQgd2lsbCBmYWlsIHRoZVxyXG4gKiAgICAgICAgICAgICAgdGVzdC4gIFxyXG4gKiAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgdGltZS1vdXQgaXMgNjAgc2Vjb25kcy5cclxuICogQGZ1bmN0aW9uIHNldFRpbWVvdXRcclxuICogQHBhcmFtIHtOdW1iZXJ9IHRpbWVvdXQgLSBBIHRpbWUtb3V0IGluIG1pbGxpc2Vjb25kcy5cclxuICogQGV4YW1wbGUgPGNhcHRpb24+W2phdmFzY3JpcHRdIFVzYWdlIGV4YW1wbGU8L2NhcHRpb24+XHJcbiAqIHdlYi5pbml0KCk7Ly9PcGVucyBicm93c2VyIHNlc3Npb24uXHJcbiAqIHdlYi5vcGVuKFwid3d3LnlvdXJ3ZWJzaXRlLmNvbVwiKTsvLyBPcGVucyBhIHdlYnNpdGUuXHJcbiAqIHdlYi5zZXRUaW1lb3V0KDYwMDAwKTsvL1NldHMgdGhlIHRpbWUgb3V0IHRvIGFtb3VudCBvZiBtaWxsaXNlY29uZHMgLlxyXG4gKi9cclxubW9kdWxlLmV4cG9ydHMgPSBhc3luYyBmdW5jdGlvbih0aW1lb3V0KSB7XHJcbiAgICB0aGlzLmhlbHBlcnMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZSh0aW1lb3V0LCAndGltZW91dCcpO1xyXG4gICAgdGhpcy53YWl0Rm9yVGltZW91dCA9IHRpbWVvdXQ7XHJcbiAgICBhd2FpdCB0aGlzLmhlbHBlcnMuc2V0VGltZW91dEltcGxpY2l0KHRpbWVvdXQpO1xyXG59O1xyXG4iXX0=
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("source-map-support/register");
|
|
4
|
-
|
|
5
|
-
/*
|
|
6
|
-
* Copyright (C) 2015-present CloudBeat Limited
|
|
7
|
-
*
|
|
8
|
-
* This program is free software: you can redistribute it and/or modify
|
|
9
|
-
* it under the terms of the GNU General Public License as published by
|
|
10
|
-
* the Free Software Foundation, either version 3 of the License, or
|
|
11
|
-
* (at your option) any later version.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @summary Sets the size of the outer browser window.
|
|
16
|
-
* @function setWindowSize
|
|
17
|
-
* @param {Number} width - Width in pixels.
|
|
18
|
-
* @param {Number} height - Height in pixels.
|
|
19
|
-
* @example <caption>[javascript] Usage example</caption>
|
|
20
|
-
* web.init();//Opens browser session.
|
|
21
|
-
* web.open("www.yourwebsite.com");// Opens a website.
|
|
22
|
-
* web.setWindowSize(100,40);//Sets the window size (width and height) in pixels.
|
|
23
|
-
*/
|
|
24
|
-
module.exports = async function (width, height) {
|
|
25
|
-
this.helpers.assertArgumentNumberNonNegative(width);
|
|
26
|
-
this.helpers.assertArgumentNumberNonNegative(height);
|
|
27
|
-
await this.driver.setWindowSize(width, height);
|
|
28
|
-
};
|
|
29
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS13ZWIvY29tbWFuZHMvc2V0V2luZG93U2l6ZS5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwid2lkdGgiLCJoZWlnaHQiLCJoZWxwZXJzIiwiYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZSIsImRyaXZlciIsInNldFdpbmRvd1NpemUiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0FBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixnQkFBZUMsS0FBZixFQUFzQkMsTUFBdEIsRUFBOEI7QUFDM0MsT0FBS0MsT0FBTCxDQUFhQywrQkFBYixDQUE2Q0gsS0FBN0M7QUFDQSxPQUFLRSxPQUFMLENBQWFDLCtCQUFiLENBQTZDRixNQUE3QztBQUNBLFFBQU0sS0FBS0csTUFBTCxDQUFZQyxhQUFaLENBQTBCTCxLQUExQixFQUFpQ0MsTUFBakMsQ0FBTjtBQUNILENBSkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAc3VtbWFyeSBTZXRzIHRoZSBzaXplIG9mIHRoZSBvdXRlciBicm93c2VyIHdpbmRvdy5cclxuICogQGZ1bmN0aW9uIHNldFdpbmRvd1NpemVcclxuICogQHBhcmFtIHtOdW1iZXJ9IHdpZHRoIC0gV2lkdGggaW4gcGl4ZWxzLlxyXG4gKiBAcGFyYW0ge051bWJlcn0gaGVpZ2h0IC0gSGVpZ2h0IGluIHBpeGVscy5cclxuICogQGV4YW1wbGUgPGNhcHRpb24+W2phdmFzY3JpcHRdIFVzYWdlIGV4YW1wbGU8L2NhcHRpb24+XHJcbiAqIHdlYi5pbml0KCk7Ly9PcGVucyBicm93c2VyIHNlc3Npb24uXHJcbiAqIHdlYi5vcGVuKFwid3d3LnlvdXJ3ZWJzaXRlLmNvbVwiKTsvLyBPcGVucyBhIHdlYnNpdGUuXHJcbiAqIHdlYi5zZXRXaW5kb3dTaXplKDEwMCw0MCk7Ly9TZXRzIHRoZSB3aW5kb3cgc2l6ZSAod2lkdGggYW5kIGhlaWdodCkgaW4gcGl4ZWxzLlxyXG4gKi9cclxubW9kdWxlLmV4cG9ydHMgPSBhc3luYyBmdW5jdGlvbih3aWR0aCwgaGVpZ2h0KSB7XHJcbiAgICB0aGlzLmhlbHBlcnMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZSh3aWR0aCk7XHJcbiAgICB0aGlzLmhlbHBlcnMuYXNzZXJ0QXJndW1lbnROdW1iZXJOb25OZWdhdGl2ZShoZWlnaHQpO1xyXG4gICAgYXdhaXQgdGhpcy5kcml2ZXIuc2V0V2luZG93U2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxufTtcclxuIl19
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
require("source-map-support/register");
|
|
4
|
-
|
|
5
|
-
/*
|
|
6
|
-
* Copyright (C) 2015-present CloudBeat Limited
|
|
7
|
-
*
|
|
8
|
-
* This program is free software: you can redistribute it and/or modify
|
|
9
|
-
* it under the terms of the GNU General Public License as published by
|
|
10
|
-
* the Free Software Foundation, either version 3 of the License, or
|
|
11
|
-
* (at your option) any later version.
|
|
12
|
-
*/
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* @function takeScreenshot
|
|
16
|
-
* @summary Take a screenshot of the current page or screen and return it as base64 encoded string.
|
|
17
|
-
* @return {String} Screenshot image encoded as a base64 string.
|
|
18
|
-
* @example <caption>[javascript] Usage example</caption>
|
|
19
|
-
* web.init();
|
|
20
|
-
* web.open("www.yourwebsite.com");
|
|
21
|
-
* var ss = web.takeScreenshot();
|
|
22
|
-
* require("fs").writeFileSync("c:\\screenshot.png", ss, 'base64');
|
|
23
|
-
*/
|
|
24
|
-
module.exports = async function () {
|
|
25
|
-
var response = await this.driver.takeScreenshot(); // sometimes execution on IE fails with the following error:
|
|
26
|
-
// "Unable to determine type from: E. Last 1 characters read: E"
|
|
27
|
-
// it's unclear what this error means and why it happens
|
|
28
|
-
// but when it happens screenshot() will return empty array instead of null for some reason
|
|
29
|
-
// so we return response only if it's a string
|
|
30
|
-
|
|
31
|
-
if (typeof response === 'string' || response instanceof String) {
|
|
32
|
-
return response;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
return null;
|
|
36
|
-
};
|
|
37
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS13ZWIvY29tbWFuZHMvdGFrZVNjcmVlbnNob3QuanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInJlc3BvbnNlIiwiZHJpdmVyIiwidGFrZVNjcmVlbnNob3QiLCJTdHJpbmciXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0FBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixrQkFBaUI7QUFDOUIsTUFBSUMsUUFBUSxHQUFHLE1BQU0sS0FBS0MsTUFBTCxDQUFZQyxjQUFaLEVBQXJCLENBRDhCLENBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBQ0EsTUFBSSxPQUFPRixRQUFQLEtBQW9CLFFBQXBCLElBQWdDQSxRQUFRLFlBQVlHLE1BQXhELEVBQWdFO0FBQzVELFdBQU9ILFFBQVA7QUFDSDs7QUFDRCxTQUFPLElBQVA7QUFDSCxDQVhEIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogQGZ1bmN0aW9uIHRha2VTY3JlZW5zaG90XHJcbiAqIEBzdW1tYXJ5IFRha2UgYSBzY3JlZW5zaG90IG9mIHRoZSBjdXJyZW50IHBhZ2Ugb3Igc2NyZWVuIGFuZCByZXR1cm4gaXQgYXMgYmFzZTY0IGVuY29kZWQgc3RyaW5nLlxyXG4gKiBAcmV0dXJuIHtTdHJpbmd9IFNjcmVlbnNob3QgaW1hZ2UgZW5jb2RlZCBhcyBhIGJhc2U2NCBzdHJpbmcuXHJcbiAqIEBleGFtcGxlIDxjYXB0aW9uPltqYXZhc2NyaXB0XSBVc2FnZSBleGFtcGxlPC9jYXB0aW9uPlxyXG4gKiB3ZWIuaW5pdCgpO1xyXG4gKiB3ZWIub3BlbihcInd3dy55b3Vyd2Vic2l0ZS5jb21cIik7XHJcbiAqIHZhciBzcyA9IHdlYi50YWtlU2NyZWVuc2hvdCgpO1xyXG4gKiByZXF1aXJlKFwiZnNcIikud3JpdGVGaWxlU3luYyhcImM6XFxcXHNjcmVlbnNob3QucG5nXCIsIHNzLCAnYmFzZTY0Jyk7XHJcbiAqL1xyXG5tb2R1bGUuZXhwb3J0cyA9IGFzeW5jIGZ1bmN0aW9uKCkge1xyXG4gICAgdmFyIHJlc3BvbnNlID0gYXdhaXQgdGhpcy5kcml2ZXIudGFrZVNjcmVlbnNob3QoKTtcclxuICAgIC8vIHNvbWV0aW1lcyBleGVjdXRpb24gb24gSUUgZmFpbHMgd2l0aCB0aGUgZm9sbG93aW5nIGVycm9yOlxyXG4gICAgLy8gXCJVbmFibGUgdG8gZGV0ZXJtaW5lIHR5cGUgZnJvbTogRS4gTGFzdCAxIGNoYXJhY3RlcnMgcmVhZDogRVwiXHJcbiAgICAvLyBpdCdzIHVuY2xlYXIgd2hhdCB0aGlzIGVycm9yIG1lYW5zIGFuZCB3aHkgaXQgaGFwcGVuc1xyXG4gICAgLy8gYnV0IHdoZW4gaXQgaGFwcGVucyBzY3JlZW5zaG90KCkgd2lsbCByZXR1cm4gZW1wdHkgYXJyYXkgaW5zdGVhZCBvZiBudWxsIGZvciBzb21lIHJlYXNvblxyXG4gICAgLy8gc28gd2UgcmV0dXJuIHJlc3BvbnNlIG9ubHkgaWYgaXQncyBhIHN0cmluZ1xyXG4gICAgaWYgKHR5cGVvZiByZXNwb25zZSA9PT0gJ3N0cmluZycgfHwgcmVzcG9uc2UgaW5zdGFuY2VvZiBTdHJpbmcpIHtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxufTtcclxuIl19
|