appium-android-driver 5.4.3 → 5.5.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/build/index.js +1 -9
- package/build/lib/android-helpers.js +10 -194
- package/build/lib/android-helpers.js.map +1 -1
- package/build/lib/bootstrap.js +4 -45
- package/build/lib/bootstrap.js.map +1 -1
- package/build/lib/commands/actions.js +3 -78
- package/build/lib/commands/actions.js.map +1 -1
- package/build/lib/commands/alert.js +3 -10
- package/build/lib/commands/alert.js.map +1 -1
- package/build/lib/commands/app-management.js +4 -32
- package/build/lib/commands/app-management.js.map +1 -1
- package/build/lib/commands/context.js +6 -78
- package/build/lib/commands/context.js.map +1 -1
- package/build/lib/commands/coverage.js +1 -6
- package/build/lib/commands/coverage.js.map +1 -1
- package/build/lib/commands/element.js +4 -47
- package/build/lib/commands/element.js.map +1 -1
- package/build/lib/commands/emu-console.js +2 -7
- package/build/lib/commands/emu-console.js.map +1 -1
- package/build/lib/commands/execute.js +1 -13
- package/build/lib/commands/execute.js.map +1 -1
- package/build/lib/commands/file-actions.js +3 -44
- package/build/lib/commands/file-actions.js.map +1 -1
- package/build/lib/commands/find.js +3 -16
- package/build/lib/commands/find.js.map +1 -1
- package/build/lib/commands/general.js +32 -91
- package/build/lib/commands/general.js.map +1 -1
- package/build/lib/commands/ime.js +3 -14
- package/build/lib/commands/ime.js.map +1 -1
- package/build/lib/commands/index.js +3 -27
- package/build/lib/commands/index.js.map +1 -1
- package/build/lib/commands/intent.js +1 -40
- package/build/lib/commands/intent.js.map +1 -1
- package/build/lib/commands/log.js +3 -35
- package/build/lib/commands/log.js.map +1 -1
- package/build/lib/commands/media-projection.js +2 -47
- package/build/lib/commands/media-projection.js.map +1 -1
- package/build/lib/commands/network.js +4 -40
- package/build/lib/commands/network.js.map +1 -1
- package/build/lib/commands/performance.js +5 -57
- package/build/lib/commands/performance.js.map +1 -1
- package/build/lib/commands/recordscreen.js +1 -59
- package/build/lib/commands/recordscreen.js.map +1 -1
- package/build/lib/commands/shell.js +1 -15
- package/build/lib/commands/shell.js.map +1 -1
- package/build/lib/commands/streamscreen.js +7 -74
- package/build/lib/commands/streamscreen.js.map +1 -1
- package/build/lib/commands/system-bars.js +1 -23
- package/build/lib/commands/system-bars.js.map +1 -1
- package/build/lib/commands/touch.js +13 -79
- package/build/lib/commands/touch.js.map +1 -1
- package/build/lib/desired-caps.js +3 -4
- package/build/lib/desired-caps.js.map +1 -1
- package/build/lib/driver.js +8 -97
- package/build/lib/driver.js.map +1 -1
- package/build/lib/logger.js +1 -5
- package/build/lib/logger.js.map +1 -1
- package/build/lib/uiautomator.js +3 -24
- package/build/lib/uiautomator.js.map +1 -1
- package/build/lib/unlock-helpers.js +1 -61
- package/build/lib/unlock-helpers.js.map +1 -1
- package/build/lib/utils.js +1 -7
- package/build/lib/utils.js.map +1 -1
- package/build/lib/webview-helpers.js +1 -94
- package/build/lib/webview-helpers.js.map +1 -1
- package/lib/android-helpers.js +2 -1
- package/lib/commands/general.js +34 -15
- package/package.json +1 -1
|
@@ -1,22 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.helpers = exports.default = void 0;
|
|
9
|
-
|
|
10
8
|
require("source-map-support/register");
|
|
11
|
-
|
|
12
9
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
13
|
-
|
|
14
10
|
var _driver = require("appium/driver");
|
|
15
|
-
|
|
16
11
|
let helpers = {},
|
|
17
|
-
|
|
18
|
-
exports.helpers = helpers;
|
|
12
|
+
extensions = {};
|
|
19
13
|
|
|
14
|
+
exports.helpers = helpers;
|
|
20
15
|
helpers.doFindElementOrEls = async function doFindElementOrEls(params) {
|
|
21
16
|
return await this.bootstrap.sendAction('find', params);
|
|
22
17
|
};
|
|
@@ -25,7 +20,6 @@ helpers.findElOrEls = async function findElOrEls(strategy, selector, mult, conte
|
|
|
25
20
|
if (!selector) {
|
|
26
21
|
throw new Error('Must provide a selector when finding elements');
|
|
27
22
|
}
|
|
28
|
-
|
|
29
23
|
let params = {
|
|
30
24
|
strategy,
|
|
31
25
|
selector,
|
|
@@ -33,7 +27,6 @@ helpers.findElOrEls = async function findElOrEls(strategy, selector, mult, conte
|
|
|
33
27
|
multiple: mult
|
|
34
28
|
};
|
|
35
29
|
let element;
|
|
36
|
-
|
|
37
30
|
let doFind = async () => {
|
|
38
31
|
try {
|
|
39
32
|
element = await this.doFindElementOrEls(params);
|
|
@@ -45,13 +38,11 @@ helpers.findElOrEls = async function findElOrEls(strategy, selector, mult, conte
|
|
|
45
38
|
if ((0, _driver.isErrorType)(err, _driver.errors.NoSuchElementError)) {
|
|
46
39
|
return false;
|
|
47
40
|
}
|
|
48
|
-
|
|
49
41
|
throw err;
|
|
50
42
|
}
|
|
51
43
|
|
|
52
44
|
return !_lodash.default.isEmpty(element);
|
|
53
45
|
};
|
|
54
|
-
|
|
55
46
|
try {
|
|
56
47
|
await this.implicitWaitForCondition(doFind);
|
|
57
48
|
} catch (err) {
|
|
@@ -61,19 +52,15 @@ helpers.findElOrEls = async function findElOrEls(strategy, selector, mult, conte
|
|
|
61
52
|
throw err;
|
|
62
53
|
}
|
|
63
54
|
}
|
|
64
|
-
|
|
65
55
|
if (mult) {
|
|
66
56
|
return element;
|
|
67
57
|
}
|
|
68
|
-
|
|
69
58
|
if (_lodash.default.isEmpty(element)) {
|
|
70
59
|
throw new _driver.errors.NoSuchElementError();
|
|
71
60
|
}
|
|
72
|
-
|
|
73
61
|
return element;
|
|
74
62
|
};
|
|
75
|
-
|
|
76
63
|
Object.assign(extensions, helpers);
|
|
77
64
|
var _default = extensions;
|
|
78
65
|
exports.default = _default;
|
|
79
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImRvRmluZEVsZW1lbnRPckVscyIsInBhcmFtcyIsImJvb3RzdHJhcCIsInNlbmRBY3Rpb24iLCJmaW5kRWxPckVscyIsInN0cmF0ZWd5Iiwic2VsZWN0b3IiLCJtdWx0IiwiY29udGV4dCIsIkVycm9yIiwibXVsdGlwbGUiLCJlbGVtZW50IiwiZG9GaW5kIiwiZXJyIiwiaXNFcnJvclR5cGUiLCJlcnJvcnMiLCJQcm94eVJlcXVlc3RFcnJvciIsImdldEFjdHVhbEVycm9yIiwiTm9TdWNoRWxlbWVudEVycm9yIiwiXyIsImlzRW1wdHkiLCJpbXBsaWNpdFdhaXRGb3JDb25kaXRpb24iLCJtZXNzYWdlIiwibWF0Y2giLCJPYmplY3QiLCJhc3NpZ24iXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvZmluZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXJyb3JzLCBpc0Vycm9yVHlwZSB9IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuXG5cbmxldCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuLyoqXG4gKiBSZWFzb24gZm9yIGlzb2xhdGluZyBkb0ZpbmRFbGVtZW50T3JFbHMgZnJvbSBmaW5kRWxPckVscyBpcyBmb3IgcmV1c2luZyBmaW5kRWxPckVsc1xuICogYWNyb3NzIGFuZHJvaWQtZHJpdmVycyAobGlrZSBhcHBpdW0tdWlhdXRvbWF0b3IyLWRyaXZlcikgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi5cbiAqIE90aGVyIGFuZHJvaWQtZHJpdmVycyAobGlrZSBhcHBpdW0tdWlhdXRvbWF0b3IyLWRyaXZlcikgbmVlZCB0byBvdmVycmlkZSBkb0ZpbmRFbGVtZW50T3JFbHNcbiAqIHRvIGZhY2lsaXRhdGUgZmluZEVsT3JFbHMuXG4gKi9cbmhlbHBlcnMuZG9GaW5kRWxlbWVudE9yRWxzID0gYXN5bmMgZnVuY3Rpb24gZG9GaW5kRWxlbWVudE9yRWxzIChwYXJhbXMpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2ZpbmQnLCBwYXJhbXMpO1xufTtcblxuLy8gc3RhdGVneTogbG9jYXRvciBzdHJhdGVneVxuLy8gc2VsZWN0b3I6IHRoZSBhY3R1YWwgc2VsZWN0b3IgZm9yIGZpbmRpbmcgYW4gZWxlbWVudFxuLy8gbXVsdDogbXVsdGlwbGUgZWxlbWVudHMgb3IganVzdCBvbmU/
|
|
66
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImRvRmluZEVsZW1lbnRPckVscyIsInBhcmFtcyIsImJvb3RzdHJhcCIsInNlbmRBY3Rpb24iLCJmaW5kRWxPckVscyIsInN0cmF0ZWd5Iiwic2VsZWN0b3IiLCJtdWx0IiwiY29udGV4dCIsIkVycm9yIiwibXVsdGlwbGUiLCJlbGVtZW50IiwiZG9GaW5kIiwiZXJyIiwiaXNFcnJvclR5cGUiLCJlcnJvcnMiLCJQcm94eVJlcXVlc3RFcnJvciIsImdldEFjdHVhbEVycm9yIiwiTm9TdWNoRWxlbWVudEVycm9yIiwiXyIsImlzRW1wdHkiLCJpbXBsaWNpdFdhaXRGb3JDb25kaXRpb24iLCJtZXNzYWdlIiwibWF0Y2giLCJPYmplY3QiLCJhc3NpZ24iXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvZmluZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXJyb3JzLCBpc0Vycm9yVHlwZSB9IGZyb20gJ2FwcGl1bS9kcml2ZXInO1xuXG5cbmxldCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuLyoqXG4gKiBSZWFzb24gZm9yIGlzb2xhdGluZyBkb0ZpbmRFbGVtZW50T3JFbHMgZnJvbSBmaW5kRWxPckVscyBpcyBmb3IgcmV1c2luZyBmaW5kRWxPckVsc1xuICogYWNyb3NzIGFuZHJvaWQtZHJpdmVycyAobGlrZSBhcHBpdW0tdWlhdXRvbWF0b3IyLWRyaXZlcikgdG8gYXZvaWQgY29kZSBkdXBsaWNhdGlvbi5cbiAqIE90aGVyIGFuZHJvaWQtZHJpdmVycyAobGlrZSBhcHBpdW0tdWlhdXRvbWF0b3IyLWRyaXZlcikgbmVlZCB0byBvdmVycmlkZSBkb0ZpbmRFbGVtZW50T3JFbHNcbiAqIHRvIGZhY2lsaXRhdGUgZmluZEVsT3JFbHMuXG4gKi9cbmhlbHBlcnMuZG9GaW5kRWxlbWVudE9yRWxzID0gYXN5bmMgZnVuY3Rpb24gZG9GaW5kRWxlbWVudE9yRWxzIChwYXJhbXMpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ2ZpbmQnLCBwYXJhbXMpO1xufTtcblxuLy8gc3RhdGVneTogbG9jYXRvciBzdHJhdGVneVxuLy8gc2VsZWN0b3I6IHRoZSBhY3R1YWwgc2VsZWN0b3IgZm9yIGZpbmRpbmcgYW4gZWxlbWVudFxuLy8gbXVsdDogbXVsdGlwbGUgZWxlbWVudHMgb3IganVzdCBvbmU/XG4vLyBjb250ZXh0OiBmaW5kaW5nIGFuIGVsZW1lbnQgZnJvbSB0aGUgcm9vdCBjb250ZXh0PyBvciBzdGFydGluZyBmcm9tIGFub3RoZXIgZWxlbWVudFxuaGVscGVycy5maW5kRWxPckVscyA9IGFzeW5jIGZ1bmN0aW9uIGZpbmRFbE9yRWxzIChzdHJhdGVneSwgc2VsZWN0b3IsIG11bHQsIGNvbnRleHQgPSAnJykge1xuICBpZiAoIXNlbGVjdG9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IHByb3ZpZGUgYSBzZWxlY3RvciB3aGVuIGZpbmRpbmcgZWxlbWVudHMnKTtcbiAgfVxuXG4gIGxldCBwYXJhbXMgPSB7XG4gICAgc3RyYXRlZ3ksXG4gICAgc2VsZWN0b3IsXG4gICAgY29udGV4dCxcbiAgICBtdWx0aXBsZTogbXVsdFxuICB9O1xuXG4gIGxldCBlbGVtZW50O1xuICBsZXQgZG9GaW5kID0gYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBlbGVtZW50ID0gYXdhaXQgdGhpcy5kb0ZpbmRFbGVtZW50T3JFbHMocGFyYW1zKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcblxuICAgICAgLy8gaWYgdGhlIGVycm9yIHRoYXQgY29tZXMgYmFjayBpcyBmcm9tIGEgcHJveGllZCByZXF1ZXN0LCB3ZSBuZWVkIHRvXG4gICAgICAvLyB1bndyYXAgaXQgdG8gaXRzIGFjdHVhbCBwcm90b2NvbCBlcnJvciBmaXJzdFxuICAgICAgaWYgKGlzRXJyb3JUeXBlKGVyciwgZXJyb3JzLlByb3h5UmVxdWVzdEVycm9yKSkge1xuICAgICAgICBlcnIgPSBlcnIuZ2V0QWN0dWFsRXJyb3IoKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1leC1hc3NpZ25cbiAgICAgIH1cblxuICAgICAgLy8gbm93IHdlIGhhdmUgdG8gaW5zcGVjdCB0aGUgZXJyb3IgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIGEgbm8gc3VjaFxuICAgICAgLy8gZWxlbWVudCBlcnJvciwgYmFzZWQgb24gdGhlIHNoYXBlIG9mIHRoZSBlcnJvciBvYmplY3QgZnJvbVxuICAgICAgLy8gYXBwaXVtL2RyaXZlclxuICAgICAgaWYgKGlzRXJyb3JUeXBlKGVyciwgZXJyb3JzLk5vU3VjaEVsZW1lbnRFcnJvcikpIHtcbiAgICAgICAgLy8gd2UgYXJlIGZpbmUgd2l0aCB0aGlzLCBqdXN0IGluZGljYXRlIGEgcmV0cnlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cblxuICAgIC8vIHdlIHdhbnQgdG8gcmV0dXJuIGZhbHNlIGlmIHdlIHdhbnQgdG8gcG90ZW50aWFsbHkgdHJ5IGFnYWluXG4gICAgcmV0dXJuICFfLmlzRW1wdHkoZWxlbWVudCk7XG4gIH07XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLmltcGxpY2l0V2FpdEZvckNvbmRpdGlvbihkb0ZpbmQpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UubWF0Y2goL0NvbmRpdGlvbiB1bm1ldC8pKSB7XG4gICAgICAvLyBvbmx5IGdldCBoZXJlIGlmIHdlIGFyZSBsb29raW5nIGZvciBtdWx0aXBsZSBlbGVtZW50c1xuICAgICAgLy8gY29uZGl0aW9uIHdhcyBub3QgbWV0IHNldHRpbmcgcmVzIHRvIGVtcHR5IGFycmF5XG4gICAgICBlbGVtZW50ID0gW107XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH1cblxuICBpZiAobXVsdCkge1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG4gIGlmIChfLmlzRW1wdHkoZWxlbWVudCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLk5vU3VjaEVsZW1lbnRFcnJvcigpO1xuICB9XG4gIHJldHVybiBlbGVtZW50O1xufTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUdBLElBQUlBLE9BQU8sR0FBRyxDQUFDLENBQUM7RUFBRUMsVUFBVSxHQUFHLENBQUMsQ0FBQzs7QUFBQztBQVFsQ0QsT0FBTyxDQUFDRSxrQkFBa0IsR0FBRyxlQUFlQSxrQkFBa0IsQ0FBRUMsTUFBTSxFQUFFO0VBQ3RFLE9BQU8sTUFBTSxJQUFJLENBQUNDLFNBQVMsQ0FBQ0MsVUFBVSxDQUFDLE1BQU0sRUFBRUYsTUFBTSxDQUFDO0FBQ3hELENBQUM7O0FBTURILE9BQU8sQ0FBQ00sV0FBVyxHQUFHLGVBQWVBLFdBQVcsQ0FBRUMsUUFBUSxFQUFFQyxRQUFRLEVBQUVDLElBQUksRUFBRUMsT0FBTyxHQUFHLEVBQUUsRUFBRTtFQUN4RixJQUFJLENBQUNGLFFBQVEsRUFBRTtJQUNiLE1BQU0sSUFBSUcsS0FBSyxDQUFDLCtDQUErQyxDQUFDO0VBQ2xFO0VBRUEsSUFBSVIsTUFBTSxHQUFHO0lBQ1hJLFFBQVE7SUFDUkMsUUFBUTtJQUNSRSxPQUFPO0lBQ1BFLFFBQVEsRUFBRUg7RUFDWixDQUFDO0VBRUQsSUFBSUksT0FBTztFQUNYLElBQUlDLE1BQU0sR0FBRyxZQUFZO0lBQ3ZCLElBQUk7TUFDRkQsT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDWCxrQkFBa0IsQ0FBQ0MsTUFBTSxDQUFDO0lBQ2pELENBQUMsQ0FBQyxPQUFPWSxHQUFHLEVBQUU7TUFJWixJQUFJLElBQUFDLG1CQUFXLEVBQUNELEdBQUcsRUFBRUUsY0FBTSxDQUFDQyxpQkFBaUIsQ0FBQyxFQUFFO1FBQzlDSCxHQUFHLEdBQUdBLEdBQUcsQ0FBQ0ksY0FBYyxFQUFFO01BQzVCOztNQUtBLElBQUksSUFBQUgsbUJBQVcsRUFBQ0QsR0FBRyxFQUFFRSxjQUFNLENBQUNHLGtCQUFrQixDQUFDLEVBQUU7UUFFL0MsT0FBTyxLQUFLO01BQ2Q7TUFDQSxNQUFNTCxHQUFHO0lBQ1g7O0lBR0EsT0FBTyxDQUFDTSxlQUFDLENBQUNDLE9BQU8sQ0FBQ1QsT0FBTyxDQUFDO0VBQzVCLENBQUM7RUFFRCxJQUFJO0lBQ0YsTUFBTSxJQUFJLENBQUNVLHdCQUF3QixDQUFDVCxNQUFNLENBQUM7RUFDN0MsQ0FBQyxDQUFDLE9BQU9DLEdBQUcsRUFBRTtJQUNaLElBQUlBLEdBQUcsQ0FBQ1MsT0FBTyxJQUFJVCxHQUFHLENBQUNTLE9BQU8sQ0FBQ0MsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEVBQUU7TUFHdkRaLE9BQU8sR0FBRyxFQUFFO0lBQ2QsQ0FBQyxNQUFNO01BQ0wsTUFBTUUsR0FBRztJQUNYO0VBQ0Y7RUFFQSxJQUFJTixJQUFJLEVBQUU7SUFDUixPQUFPSSxPQUFPO0VBQ2hCO0VBQ0EsSUFBSVEsZUFBQyxDQUFDQyxPQUFPLENBQUNULE9BQU8sQ0FBQyxFQUFFO0lBQ3RCLE1BQU0sSUFBSUksY0FBTSxDQUFDRyxrQkFBa0IsRUFBRTtFQUN2QztFQUNBLE9BQU9QLE9BQU87QUFDaEIsQ0FBQztBQUVEYSxNQUFNLENBQUNDLE1BQU0sQ0FBQzFCLFVBQVUsRUFBRUQsT0FBTyxDQUFDO0FBQUMsZUFFcEJDLFVBQVU7QUFBQSJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"find.js","names":["helpers","extensions","doFindElementOrEls","params","bootstrap","sendAction","findElOrEls","strategy","selector","mult","context","Error","multiple","element","doFind","err","isErrorType","errors","ProxyRequestError","getActualError","NoSuchElementError","_","isEmpty","implicitWaitForCondition","message","match","Object","assign"],"sources":["../../../lib/commands/find.js"],"sourcesContent":["import _ from 'lodash';\nimport { errors, isErrorType } from 'appium/driver';\n\n\nlet helpers = {}, extensions = {};\n\n/**\n * Reason for isolating doFindElementOrEls from findElOrEls is for reusing findElOrEls\n * across android-drivers (like appium-uiautomator2-driver) to avoid code duplication.\n * Other android-drivers (like appium-uiautomator2-driver) need to override doFindElementOrEls\n * to facilitate findElOrEls.\n */\nhelpers.doFindElementOrEls = async function doFindElementOrEls (params) {\n return await this.bootstrap.sendAction('find', params);\n};\n\n// stategy: locator strategy\n// selector: the actual selector for finding an element\n// mult: multiple elements or just one?\n// context: finding an element from the root context? or starting from another element\nhelpers.findElOrEls = async function findElOrEls (strategy, selector, mult, context = '') {\n if (!selector) {\n throw new Error('Must provide a selector when finding elements');\n }\n\n let params = {\n strategy,\n selector,\n context,\n multiple: mult\n };\n\n let element;\n let doFind = async () => {\n try {\n element = await this.doFindElementOrEls(params);\n } catch (err) {\n\n // if the error that comes back is from a proxied request, we need to\n // unwrap it to its actual protocol error first\n if (isErrorType(err, errors.ProxyRequestError)) {\n err = err.getActualError(); // eslint-disable-line no-ex-assign\n }\n\n // now we have to inspect the error to determine if it is a no such\n // element error, based on the shape of the error object from\n // appium/driver\n if (isErrorType(err, errors.NoSuchElementError)) {\n // we are fine with this, just indicate a retry\n return false;\n }\n throw err;\n }\n\n // we want to return false if we want to potentially try again\n return !_.isEmpty(element);\n };\n\n try {\n await this.implicitWaitForCondition(doFind);\n } catch (err) {\n if (err.message && err.message.match(/Condition unmet/)) {\n // only get here if we are looking for multiple elements\n // condition was not met setting res to empty array\n element = [];\n } else {\n throw err;\n }\n }\n\n if (mult) {\n return element;\n }\n if (_.isEmpty(element)) {\n throw new errors.NoSuchElementError();\n }\n return element;\n};\n\nObject.assign(extensions, helpers);\nexport { helpers };\nexport default extensions;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"find.js","names":["helpers","extensions","doFindElementOrEls","params","bootstrap","sendAction","findElOrEls","strategy","selector","mult","context","Error","multiple","element","doFind","err","isErrorType","errors","ProxyRequestError","getActualError","NoSuchElementError","_","isEmpty","implicitWaitForCondition","message","match","Object","assign"],"sources":["../../../lib/commands/find.js"],"sourcesContent":["import _ from 'lodash';\nimport { errors, isErrorType } from 'appium/driver';\n\n\nlet helpers = {}, extensions = {};\n\n/**\n * Reason for isolating doFindElementOrEls from findElOrEls is for reusing findElOrEls\n * across android-drivers (like appium-uiautomator2-driver) to avoid code duplication.\n * Other android-drivers (like appium-uiautomator2-driver) need to override doFindElementOrEls\n * to facilitate findElOrEls.\n */\nhelpers.doFindElementOrEls = async function doFindElementOrEls (params) {\n return await this.bootstrap.sendAction('find', params);\n};\n\n// stategy: locator strategy\n// selector: the actual selector for finding an element\n// mult: multiple elements or just one?\n// context: finding an element from the root context? or starting from another element\nhelpers.findElOrEls = async function findElOrEls (strategy, selector, mult, context = '') {\n if (!selector) {\n throw new Error('Must provide a selector when finding elements');\n }\n\n let params = {\n strategy,\n selector,\n context,\n multiple: mult\n };\n\n let element;\n let doFind = async () => {\n try {\n element = await this.doFindElementOrEls(params);\n } catch (err) {\n\n // if the error that comes back is from a proxied request, we need to\n // unwrap it to its actual protocol error first\n if (isErrorType(err, errors.ProxyRequestError)) {\n err = err.getActualError(); // eslint-disable-line no-ex-assign\n }\n\n // now we have to inspect the error to determine if it is a no such\n // element error, based on the shape of the error object from\n // appium/driver\n if (isErrorType(err, errors.NoSuchElementError)) {\n // we are fine with this, just indicate a retry\n return false;\n }\n throw err;\n }\n\n // we want to return false if we want to potentially try again\n return !_.isEmpty(element);\n };\n\n try {\n await this.implicitWaitForCondition(doFind);\n } catch (err) {\n if (err.message && err.message.match(/Condition unmet/)) {\n // only get here if we are looking for multiple elements\n // condition was not met setting res to empty array\n element = [];\n } else {\n throw err;\n }\n }\n\n if (mult) {\n return element;\n }\n if (_.isEmpty(element)) {\n throw new errors.NoSuchElementError();\n }\n return element;\n};\n\nObject.assign(extensions, helpers);\nexport { helpers };\nexport default extensions;\n"],"mappings":";;;;;;;;AAAA;AACA;AAGA,IAAIA,OAAO,GAAG,CAAC,CAAC;EAAEC,UAAU,GAAG,CAAC,CAAC;;AAAC;AAQlCD,OAAO,CAACE,kBAAkB,GAAG,eAAeA,kBAAkB,CAAEC,MAAM,EAAE;EACtE,OAAO,MAAM,IAAI,CAACC,SAAS,CAACC,UAAU,CAAC,MAAM,EAAEF,MAAM,CAAC;AACxD,CAAC;;AAMDH,OAAO,CAACM,WAAW,GAAG,eAAeA,WAAW,CAAEC,QAAQ,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,OAAO,GAAG,EAAE,EAAE;EACxF,IAAI,CAACF,QAAQ,EAAE;IACb,MAAM,IAAIG,KAAK,CAAC,+CAA+C,CAAC;EAClE;EAEA,IAAIR,MAAM,GAAG;IACXI,QAAQ;IACRC,QAAQ;IACRE,OAAO;IACPE,QAAQ,EAAEH;EACZ,CAAC;EAED,IAAII,OAAO;EACX,IAAIC,MAAM,GAAG,YAAY;IACvB,IAAI;MACFD,OAAO,GAAG,MAAM,IAAI,CAACX,kBAAkB,CAACC,MAAM,CAAC;IACjD,CAAC,CAAC,OAAOY,GAAG,EAAE;MAIZ,IAAI,IAAAC,mBAAW,EAACD,GAAG,EAAEE,cAAM,CAACC,iBAAiB,CAAC,EAAE;QAC9CH,GAAG,GAAGA,GAAG,CAACI,cAAc,EAAE;MAC5B;;MAKA,IAAI,IAAAH,mBAAW,EAACD,GAAG,EAAEE,cAAM,CAACG,kBAAkB,CAAC,EAAE;QAE/C,OAAO,KAAK;MACd;MACA,MAAML,GAAG;IACX;;IAGA,OAAO,CAACM,eAAC,CAACC,OAAO,CAACT,OAAO,CAAC;EAC5B,CAAC;EAED,IAAI;IACF,MAAM,IAAI,CAACU,wBAAwB,CAACT,MAAM,CAAC;EAC7C,CAAC,CAAC,OAAOC,GAAG,EAAE;IACZ,IAAIA,GAAG,CAACS,OAAO,IAAIT,GAAG,CAACS,OAAO,CAACC,KAAK,CAAC,iBAAiB,CAAC,EAAE;MAGvDZ,OAAO,GAAG,EAAE;IACd,CAAC,MAAM;MACL,MAAME,GAAG;IACX;EACF;EAEA,IAAIN,IAAI,EAAE;IACR,OAAOI,OAAO;EAChB;EACA,IAAIQ,eAAC,CAACC,OAAO,CAACT,OAAO,CAAC,EAAE;IACtB,MAAM,IAAII,cAAM,CAACG,kBAAkB,EAAE;EACvC;EACA,OAAOP,OAAO;AAChB,CAAC;AAEDa,MAAM,CAACC,MAAM,CAAC1B,UAAU,EAAED,OAAO,CAAC;AAAC,eAEpBC,UAAU;AAAA"}
|