appium-uiautomator2-driver 2.29.10 → 2.30.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.
Files changed (135) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/build/index.d.ts +4 -0
  3. package/build/index.d.ts.map +1 -0
  4. package/build/index.js +8 -16
  5. package/build/index.js.map +1 -0
  6. package/build/lib/commands/actions.d.ts +2 -0
  7. package/build/lib/commands/actions.d.ts.map +1 -0
  8. package/build/lib/commands/actions.js +67 -65
  9. package/build/lib/commands/actions.js.map +1 -1
  10. package/build/lib/commands/alert.d.ts +2 -0
  11. package/build/lib/commands/alert.d.ts.map +1 -0
  12. package/build/lib/commands/alert.js +28 -29
  13. package/build/lib/commands/alert.js.map +1 -1
  14. package/build/lib/commands/app-strings.d.ts +3 -0
  15. package/build/lib/commands/app-strings.d.ts.map +1 -0
  16. package/build/lib/commands/app-strings.js +86 -58
  17. package/build/lib/commands/app-strings.js.map +1 -1
  18. package/build/lib/commands/battery.d.ts +2 -0
  19. package/build/lib/commands/battery.d.ts.map +1 -0
  20. package/build/lib/commands/battery.js +26 -18
  21. package/build/lib/commands/battery.js.map +1 -1
  22. package/build/lib/commands/element.d.ts +2 -0
  23. package/build/lib/commands/element.d.ts.map +1 -0
  24. package/build/lib/commands/element.js +140 -162
  25. package/build/lib/commands/element.js.map +1 -1
  26. package/build/lib/commands/find.d.ts +2 -0
  27. package/build/lib/commands/find.d.ts.map +1 -0
  28. package/build/lib/commands/find.js +39 -27
  29. package/build/lib/commands/find.js.map +1 -1
  30. package/build/lib/commands/general.d.ts +4 -0
  31. package/build/lib/commands/general.d.ts.map +1 -0
  32. package/build/lib/commands/general.js +217 -216
  33. package/build/lib/commands/general.js.map +1 -1
  34. package/build/lib/commands/gestures.d.ts +2 -0
  35. package/build/lib/commands/gestures.d.ts.map +1 -0
  36. package/build/lib/commands/gestures.js +206 -194
  37. package/build/lib/commands/gestures.js.map +1 -1
  38. package/build/lib/commands/index.d.ts +2 -0
  39. package/build/lib/commands/index.d.ts.map +1 -0
  40. package/build/lib/commands/index.js +13 -23
  41. package/build/lib/commands/index.js.map +1 -1
  42. package/build/lib/commands/mixins.d.ts +84 -0
  43. package/build/lib/commands/mixins.d.ts.map +1 -0
  44. package/build/lib/commands/mixins.js +23 -0
  45. package/build/lib/commands/mixins.js.map +1 -0
  46. package/build/lib/commands/screenshot.d.ts +2 -0
  47. package/build/lib/commands/screenshot.d.ts.map +1 -0
  48. package/build/lib/commands/screenshot.js +77 -63
  49. package/build/lib/commands/screenshot.js.map +1 -1
  50. package/build/lib/commands/touch.d.ts +2 -0
  51. package/build/lib/commands/touch.d.ts.map +1 -0
  52. package/build/lib/commands/touch.js +48 -39
  53. package/build/lib/commands/touch.js.map +1 -1
  54. package/build/lib/commands/types.d.ts +452 -0
  55. package/build/lib/commands/types.d.ts.map +1 -0
  56. package/build/lib/commands/types.js +3 -0
  57. package/build/lib/commands/types.js.map +1 -0
  58. package/build/lib/commands/viewport.d.ts +2 -0
  59. package/build/lib/commands/viewport.d.ts.map +1 -0
  60. package/build/lib/commands/viewport.js +37 -37
  61. package/build/lib/commands/viewport.js.map +1 -1
  62. package/build/lib/constraints.d.ts +334 -0
  63. package/build/lib/constraints.d.ts.map +1 -0
  64. package/build/lib/constraints.js +51 -0
  65. package/build/lib/constraints.js.map +1 -0
  66. package/build/lib/css-converter.d.ts +45 -0
  67. package/build/lib/css-converter.d.ts.map +1 -0
  68. package/build/lib/css-converter.js +272 -176
  69. package/build/lib/css-converter.js.map +1 -1
  70. package/build/lib/driver.d.ts +912 -0
  71. package/build/lib/driver.d.ts.map +1 -0
  72. package/build/lib/driver.js +738 -483
  73. package/build/lib/driver.js.map +1 -1
  74. package/build/lib/execute-method-map.d.ts +477 -0
  75. package/build/lib/execute-method-map.d.ts.map +1 -0
  76. package/build/lib/execute-method-map.js +542 -0
  77. package/build/lib/execute-method-map.js.map +1 -0
  78. package/build/lib/extensions.d.ts +3 -0
  79. package/build/lib/extensions.d.ts.map +1 -0
  80. package/build/lib/extensions.js +3 -7
  81. package/build/lib/extensions.js.map +1 -1
  82. package/build/lib/helpers.d.ts +7 -0
  83. package/build/lib/helpers.d.ts.map +1 -0
  84. package/build/lib/helpers.js +36 -30
  85. package/build/lib/helpers.js.map +1 -1
  86. package/build/lib/logger.d.ts +3 -0
  87. package/build/lib/logger.d.ts.map +1 -0
  88. package/build/lib/logger.js +5 -11
  89. package/build/lib/logger.js.map +1 -1
  90. package/build/lib/method-map.d.ts +389 -0
  91. package/build/lib/method-map.d.ts.map +1 -0
  92. package/build/lib/method-map.js +11 -18
  93. package/build/lib/method-map.js.map +1 -1
  94. package/build/lib/types.d.ts +45 -0
  95. package/build/lib/types.d.ts.map +1 -0
  96. package/build/lib/types.js +3 -0
  97. package/build/lib/types.js.map +1 -0
  98. package/build/lib/uiautomator2.d.ts +45 -0
  99. package/build/lib/uiautomator2.d.ts.map +1 -0
  100. package/build/lib/uiautomator2.js +334 -297
  101. package/build/lib/uiautomator2.js.map +1 -1
  102. package/build/lib/utils.d.ts +10 -0
  103. package/build/lib/utils.d.ts.map +1 -0
  104. package/build/lib/utils.js +23 -16
  105. package/build/lib/utils.js.map +1 -1
  106. package/build/tsconfig.tsbuildinfo +1 -0
  107. package/index.js +5 -3
  108. package/lib/commands/actions.js +115 -101
  109. package/lib/commands/alert.js +36 -44
  110. package/lib/commands/app-strings.js +79 -58
  111. package/lib/commands/battery.js +27 -28
  112. package/lib/commands/element.js +231 -134
  113. package/lib/commands/find.js +40 -21
  114. package/lib/commands/general.js +271 -336
  115. package/lib/commands/gestures.js +252 -366
  116. package/lib/commands/index.js +11 -31
  117. package/lib/commands/mixins.ts +167 -0
  118. package/lib/commands/screenshot.js +80 -76
  119. package/lib/commands/touch.js +64 -31
  120. package/lib/commands/types.ts +473 -0
  121. package/lib/commands/viewport.js +43 -31
  122. package/lib/constraints.ts +53 -0
  123. package/lib/css-converter.js +9 -1
  124. package/lib/{driver.js → driver.ts} +383 -225
  125. package/lib/execute-method-map.ts +573 -0
  126. package/lib/method-map.ts +11 -0
  127. package/lib/types.ts +59 -0
  128. package/lib/uiautomator2.js +21 -2
  129. package/lib/utils.js +2 -2
  130. package/npm-shrinkwrap.json +396 -528
  131. package/package.json +96 -70
  132. package/build/lib/desired-caps.js +0 -72
  133. package/build/lib/desired-caps.js.map +0 -1
  134. package/lib/desired-caps.js +0 -70
  135. package/lib/method-map.js +0 -11
@@ -0,0 +1,2 @@
1
+ export type UiAutomator2Server = import('../uiautomator2').UiAutomator2Server;
2
+ //# sourceMappingURL=element.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../../../lib/commands/element.js"],"names":[],"mappings":"iCA+Oa,OAAO,iBAAiB,EAAE,kBAAkB"}
@@ -1,165 +1,143 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.helpers = exports.default = exports.commands = void 0;
8
- require("source-map-support/register");
9
- var _lodash = _interopRequireDefault(require("lodash"));
10
- var _support = require("appium/support");
11
- var _driver = require("appium/driver");
12
- var _utils = require("../utils");
13
- let commands = {},
14
- helpers = {},
15
- extensions = {};
16
- exports.helpers = helpers;
17
- exports.commands = commands;
2
+ // @ts-check
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const bluebird_1 = __importDefault(require("bluebird"));
8
+ const lodash_1 = __importDefault(require("lodash"));
9
+ const support_1 = require("appium/support");
10
+ const driver_1 = require("appium/driver");
11
+ const utils_1 = require("../utils");
12
+ const mixins_1 = require("./mixins");
13
+ /**
14
+ * @param {any} s
15
+ * @returns {boolean}
16
+ */
18
17
  function toBool(s) {
19
- return _lodash.default.isString(s) ? s.toLowerCase() === 'true' : !!s;
18
+ return lodash_1.default.isString(s) ? s.toLowerCase() === 'true' : !!s;
20
19
  }
21
- commands.active = async function active() {
22
- return await this.uiautomator2.jwproxy.command('/element/active', 'GET');
23
- };
24
- commands.getAttribute = async function (attribute, elementId) {
25
- return await this.uiautomator2.jwproxy.command(`/element/${elementId}/attribute/${attribute}`, 'GET', {});
26
- };
27
- commands.elementDisplayed = async function (elementId) {
28
- return toBool(await this.getAttribute('displayed', elementId));
29
- };
30
- commands.elementEnabled = async function (elementId) {
31
- return toBool(await this.getAttribute('enabled', elementId));
32
- };
33
- commands.elementSelected = async function (elementId) {
34
- return toBool(await this.getAttribute('selected', elementId));
35
- };
36
- commands.getName = async function (elementId) {
37
- return await this.uiautomator2.jwproxy.command(`/element/${elementId}/name`, 'GET', {});
38
- };
39
- commands.getLocation = async function (elementId) {
40
- return await this.uiautomator2.jwproxy.command(`/element/${elementId}/location`, 'GET', {});
41
- };
42
- commands.getSize = async function (elementId) {
43
- return await this.uiautomator2.jwproxy.command(`/element/${elementId}/size`, 'GET', {});
44
- };
45
- commands.touchLongClick = async function (element, x, y, duration) {
46
- let params = {
47
- element,
48
- x,
49
- y,
50
- duration
51
- };
52
- return await this.uiautomator2.jwproxy.command(`/touch/longclick`, 'POST', {
53
- params
54
- });
55
- };
56
- commands.touchDown = async function (element, x, y) {
57
- let params = {
58
- element,
59
- x,
60
- y
61
- };
62
- return await this.uiautomator2.jwproxy.command(`/touch/down`, 'POST', {
63
- params
64
- });
65
- };
66
- commands.touchUp = async function (element, x, y) {
67
- let params = {
68
- element,
69
- x,
70
- y
71
- };
72
- return await this.uiautomator2.jwproxy.command(`/touch/up`, 'POST', {
73
- params
74
- });
75
- };
76
- commands.touchMove = async function (element, x, y) {
77
- let params = {
78
- element,
79
- x,
80
- y
81
- };
82
- return await this.uiautomator2.jwproxy.command(`/touch/move`, 'POST', {
83
- params
84
- });
85
- };
86
- helpers.doSetElementValue = async function (params) {
87
- return await this.uiautomator2.jwproxy.command(`/element/${params.elementId}/value`, 'POST', params);
88
- };
89
- commands.setValueImmediate = async function (keys, elementId) {
90
- return await this.uiautomator2.jwproxy.command(`/element/${elementId}/value`, 'POST', {
91
- elementId,
92
- text: _lodash.default.isArray(keys) ? keys.join('') : keys,
93
- replace: false
94
- });
95
- };
96
- commands.getText = async function (elementId) {
97
- return await this.uiautomator2.jwproxy.command(`/element/${elementId}/text`, 'GET', {});
98
- };
99
- commands.click = async function (element) {
100
- return await this.uiautomator2.jwproxy.command(`/element/${element}/click`, 'POST', {
101
- element
102
- });
103
- };
104
- commands.getElementScreenshot = async function (element) {
105
- return await this.uiautomator2.jwproxy.command(`/element/${element}/screenshot`, 'GET', {});
106
- };
107
- commands.tap = async function (elementId = null, x = null, y = null, count = 1) {
108
- const areCoordinatesDefined = _support.util.hasValue(x) && _support.util.hasValue(y);
109
- if (!_support.util.hasValue(elementId) && !areCoordinatesDefined) {
110
- throw new Error(`Either element id to tap or both absolute coordinates should be defined`);
111
- }
112
- for (let i = 0; i < count; i++) {
113
- if (_support.util.hasValue(elementId) && !areCoordinatesDefined) {
114
- await this.uiautomator2.jwproxy.command(`/element/${elementId}/click`, 'POST');
115
- } else {
116
- await this.uiautomator2.jwproxy.command(`/appium/tap`, 'POST', {
117
- x,
118
- y,
119
- [_driver.W3C_ELEMENT_KEY]: elementId
120
- });
121
- }
122
- }
123
- };
124
- commands.clear = async function (elementId) {
125
- return await this.uiautomator2.jwproxy.command(`/element/${elementId}/clear`, 'POST', {
126
- elementId
127
- });
128
- };
129
- commands.getElementRect = async function (elementId) {
130
- if (this.isWebContext()) {
131
- this.log.debug(`Detected downstream chromedriver protocol: ${this.chromedriver.jwproxy.downstreamProtocol}`);
132
- if (this.chromedriver.jwproxy.downstreamProtocol === _driver.PROTOCOLS.MJSONWP) {
133
- const {
134
- x,
135
- y
136
- } = await this.chromedriver.jwproxy.command(`/element/${elementId}/location`, 'GET');
137
- const {
138
- width,
139
- height
140
- } = await this.chromedriver.jwproxy.command(`/element/${elementId}/size`, 'GET');
141
- return {
142
- x,
143
- y,
144
- width,
145
- height
146
- };
147
- }
148
- return await this.chromedriver.jwproxy.command(`/element/${elementId}/rect`, 'GET');
149
- }
150
- return await this.uiautomator2.jwproxy.command(`/element/${elementId}/rect`, 'GET');
151
- };
152
- commands.mobileReplaceElementValue = async function mobileReplaceElementValue(opts = {}) {
153
- const {
154
- elementId,
155
- text
156
- } = (0, _utils.requireArgs)(['elementId', 'text'], opts);
157
- return await this.uiautomator2.jwproxy.command(`/element/${elementId}/value`, 'POST', {
158
- text,
159
- replace: true
160
- });
161
- };
162
- Object.assign(extensions, commands, helpers);
163
- var _default = extensions;
164
- exports.default = _default;
165
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfc3VwcG9ydCIsIl9kcml2ZXIiLCJfdXRpbHMiLCJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZXhwb3J0cyIsInRvQm9vbCIsInMiLCJfIiwiaXNTdHJpbmciLCJ0b0xvd2VyQ2FzZSIsImFjdGl2ZSIsInVpYXV0b21hdG9yMiIsImp3cHJveHkiLCJjb21tYW5kIiwiZ2V0QXR0cmlidXRlIiwiYXR0cmlidXRlIiwiZWxlbWVudElkIiwiZWxlbWVudERpc3BsYXllZCIsImVsZW1lbnRFbmFibGVkIiwiZWxlbWVudFNlbGVjdGVkIiwiZ2V0TmFtZSIsImdldExvY2F0aW9uIiwiZ2V0U2l6ZSIsInRvdWNoTG9uZ0NsaWNrIiwiZWxlbWVudCIsIngiLCJ5IiwiZHVyYXRpb24iLCJwYXJhbXMiLCJ0b3VjaERvd24iLCJ0b3VjaFVwIiwidG91Y2hNb3ZlIiwiZG9TZXRFbGVtZW50VmFsdWUiLCJzZXRWYWx1ZUltbWVkaWF0ZSIsImtleXMiLCJ0ZXh0IiwiaXNBcnJheSIsImpvaW4iLCJyZXBsYWNlIiwiZ2V0VGV4dCIsImNsaWNrIiwiZ2V0RWxlbWVudFNjcmVlbnNob3QiLCJ0YXAiLCJjb3VudCIsImFyZUNvb3JkaW5hdGVzRGVmaW5lZCIsInV0aWwiLCJoYXNWYWx1ZSIsIkVycm9yIiwiaSIsIlczQ19FTEVNRU5UX0tFWSIsImNsZWFyIiwiZ2V0RWxlbWVudFJlY3QiLCJpc1dlYkNvbnRleHQiLCJsb2ciLCJkZWJ1ZyIsImNocm9tZWRyaXZlciIsImRvd25zdHJlYW1Qcm90b2NvbCIsIlBST1RPQ09MUyIsIk1KU09OV1AiLCJ3aWR0aCIsImhlaWdodCIsIm1vYmlsZVJlcGxhY2VFbGVtZW50VmFsdWUiLCJvcHRzIiwicmVxdWlyZUFyZ3MiLCJPYmplY3QiLCJhc3NpZ24iLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvZWxlbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IFBST1RPQ09MUywgVzNDX0VMRU1FTlRfS0VZIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5pbXBvcnQgeyByZXF1aXJlQXJncyB9IGZyb20gJy4uL3V0aWxzJztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiB0b0Jvb2wgKHMpIHtcbiAgcmV0dXJuIF8uaXNTdHJpbmcocykgPyAocy50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpIDogISFzO1xufVxuXG5jb21tYW5kcy5hY3RpdmUgPSBhc3luYyBmdW5jdGlvbiBhY3RpdmUgKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvZWxlbWVudC9hY3RpdmUnLCAnR0VUJyk7XG59O1xuXG5jb21tYW5kcy5nZXRBdHRyaWJ1dGUgPSBhc3luYyBmdW5jdGlvbiAoYXR0cmlidXRlLCBlbGVtZW50SWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtlbGVtZW50SWR9L2F0dHJpYnV0ZS8ke2F0dHJpYnV0ZX1gLCAnR0VUJywge30pO1xufTtcblxuY29tbWFuZHMuZWxlbWVudERpc3BsYXllZCA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50SWQpIHtcbiAgcmV0dXJuIHRvQm9vbChhd2FpdCB0aGlzLmdldEF0dHJpYnV0ZSgnZGlzcGxheWVkJywgZWxlbWVudElkKSk7XG59O1xuXG5jb21tYW5kcy5lbGVtZW50RW5hYmxlZCA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50SWQpIHtcbiAgcmV0dXJuIHRvQm9vbChhd2FpdCB0aGlzLmdldEF0dHJpYnV0ZSgnZW5hYmxlZCcsIGVsZW1lbnRJZCkpO1xufTtcblxuY29tbWFuZHMuZWxlbWVudFNlbGVjdGVkID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnRJZCkge1xuICByZXR1cm4gdG9Cb29sKGF3YWl0IHRoaXMuZ2V0QXR0cmlidXRlKCdzZWxlY3RlZCcsIGVsZW1lbnRJZCkpO1xufTtcblxuY29tbWFuZHMuZ2V0TmFtZSA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50SWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtlbGVtZW50SWR9L25hbWVgLCAnR0VUJywge30pO1xufTtcblxuY29tbWFuZHMuZ2V0TG9jYXRpb24gPSBhc3luYyBmdW5jdGlvbiAoZWxlbWVudElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC9lbGVtZW50LyR7ZWxlbWVudElkfS9sb2NhdGlvbmAsICdHRVQnLCB7fSk7XG59O1xuXG5jb21tYW5kcy5nZXRTaXplID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vc2l6ZWAsICdHRVQnLCB7fSk7XG59O1xuXG5jb21tYW5kcy50b3VjaExvbmdDbGljayA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50LCB4LCB5LCBkdXJhdGlvbikge1xuICBsZXQgcGFyYW1zID0ge2VsZW1lbnQsIHgsIHksIGR1cmF0aW9ufTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL3RvdWNoL2xvbmdjbGlja2AsICdQT1NUJywge3BhcmFtc30pO1xufTtcblxuY29tbWFuZHMudG91Y2hEb3duID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnQsIHgsIHkpIHtcbiAgbGV0IHBhcmFtcyA9IHtlbGVtZW50LCB4LCB5fTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL3RvdWNoL2Rvd25gLCAnUE9TVCcsIHtwYXJhbXN9KTtcbn07XG5cbmNvbW1hbmRzLnRvdWNoVXAgPSBhc3luYyBmdW5jdGlvbiAoZWxlbWVudCwgeCwgeSkge1xuICBsZXQgcGFyYW1zID0ge2VsZW1lbnQsIHgsIHl9O1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvdG91Y2gvdXBgLCAnUE9TVCcsIHtwYXJhbXN9KTtcbn07XG5cbmNvbW1hbmRzLnRvdWNoTW92ZSA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50LCB4LCB5KSB7XG4gIGxldCBwYXJhbXMgPSB7ZWxlbWVudCwgeCwgeX07XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC90b3VjaC9tb3ZlYCwgJ1BPU1QnLCB7cGFyYW1zfSk7XG59O1xuXG5oZWxwZXJzLmRvU2V0RWxlbWVudFZhbHVlID0gYXN5bmMgZnVuY3Rpb24gKHBhcmFtcykge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke3BhcmFtcy5lbGVtZW50SWR9L3ZhbHVlYCwgJ1BPU1QnLCBwYXJhbXMpO1xufTtcblxuY29tbWFuZHMuc2V0VmFsdWVJbW1lZGlhdGUgPSBhc3luYyBmdW5jdGlvbiAoa2V5cywgZWxlbWVudElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC9lbGVtZW50LyR7ZWxlbWVudElkfS92YWx1ZWAsICdQT1NUJywge1xuICAgIGVsZW1lbnRJZCxcbiAgICB0ZXh0OiBfLmlzQXJyYXkoa2V5cykgPyBrZXlzLmpvaW4oJycpIDoga2V5cyxcbiAgICByZXBsYWNlOiBmYWxzZVxuICB9KTtcbn07XG5cbmNvbW1hbmRzLmdldFRleHQgPSBhc3luYyBmdW5jdGlvbiAoZWxlbWVudElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC9lbGVtZW50LyR7ZWxlbWVudElkfS90ZXh0YCwgJ0dFVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLmNsaWNrID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtlbGVtZW50fS9jbGlja2AsICdQT1NUJywge2VsZW1lbnR9KTtcbn07XG5cbmNvbW1hbmRzLmdldEVsZW1lbnRTY3JlZW5zaG90ID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtlbGVtZW50fS9zY3JlZW5zaG90YCwgJ0dFVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLnRhcCA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50SWQgPSBudWxsLCB4ID0gbnVsbCwgeSA9IG51bGwsIGNvdW50ID0gMSkge1xuICBjb25zdCBhcmVDb29yZGluYXRlc0RlZmluZWQgPSB1dGlsLmhhc1ZhbHVlKHgpICYmIHV0aWwuaGFzVmFsdWUoeSk7XG4gIGlmICghdXRpbC5oYXNWYWx1ZShlbGVtZW50SWQpICYmICFhcmVDb29yZGluYXRlc0RlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVpdGhlciBlbGVtZW50IGlkIHRvIHRhcCBvciBib3RoIGFic29sdXRlIGNvb3JkaW5hdGVzIHNob3VsZCBiZSBkZWZpbmVkYCk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICBpZiAodXRpbC5oYXNWYWx1ZShlbGVtZW50SWQpICYmICFhcmVDb29yZGluYXRlc0RlZmluZWQpIHtcbiAgICAgIC8vIHdlIGFyZSBlaXRoZXIgdGFwcGluZyBvbiB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgZWxlbWVudFxuICAgICAgLy8gb3IgYW4gb2Zmc2V0IGZyb20gdGhlIHRvcCBsZWZ0IGNvcm5lclxuICAgICAgYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vY2xpY2tgLCAnUE9TVCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vdGFwYCwgJ1BPU1QnLCB7XG4gICAgICAgIHgsIHksXG4gICAgICAgIFtXM0NfRUxFTUVOVF9LRVldOiBlbGVtZW50SWQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn07XG5cbmNvbW1hbmRzLmNsZWFyID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vY2xlYXJgLCAnUE9TVCcsIHtlbGVtZW50SWR9KTtcbn07XG5cbmNvbW1hbmRzLmdldEVsZW1lbnRSZWN0ID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnRJZCkge1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRoaXMubG9nLmRlYnVnKGBEZXRlY3RlZCBkb3duc3RyZWFtIGNocm9tZWRyaXZlciBwcm90b2NvbDogJHt0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmRvd25zdHJlYW1Qcm90b2NvbH1gKTtcbiAgICBpZiAodGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5kb3duc3RyZWFtUHJvdG9jb2wgPT09IFBST1RPQ09MUy5NSlNPTldQKSB7XG4gICAgICBjb25zdCB7eCwgeX0gPSBhd2FpdCB0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmNvbW1hbmQoYC9lbGVtZW50LyR7ZWxlbWVudElkfS9sb2NhdGlvbmAsICdHRVQnKTtcbiAgICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0fSA9IGF3YWl0IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtlbGVtZW50SWR9L3NpemVgLCAnR0VUJyk7XG4gICAgICByZXR1cm4ge3gsIHksIHdpZHRoLCBoZWlnaHR9O1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vcmVjdGAsICdHRVQnKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vcmVjdGAsICdHRVQnKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gUmVwbGFjZVZhbHVlT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGVsZW1lbnRJZCBUaGUgaWQgb2YgdGhlIGVsZW1lbnQgd2hvc2UgY29udGVudCB3aWxsIGJlIHJlcGxhY2VkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGV4dCBUaGUgYWN0dWFsIHRleHQgdG8gc2V0XG4gKi9cblxuLyoqXG4gKiBTZW5kcyB0ZXh0IHRvIHRoZSBnaXZlbiBlbGVtZW50IGJ5IHJlcGxhY2luZyBpdHMgcHJldmlvdXMgY29udGVudFxuICpcbiAqIEBwYXJhbSB7UmVwbGFjZVZhbHVlT3B0aW9uc30gb3B0c1xuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhIGZhdWxyZSB3aGlsZSBzZXR0aW5nIHRoZSB0ZXh0XG4gKi9cbmNvbW1hbmRzLm1vYmlsZVJlcGxhY2VFbGVtZW50VmFsdWUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVSZXBsYWNlRWxlbWVudFZhbHVlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge2VsZW1lbnRJZCwgdGV4dH0gPSByZXF1aXJlQXJncyhbJ2VsZW1lbnRJZCcsICd0ZXh0J10sIG9wdHMpO1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vdmFsdWVgLCAnUE9TVCcsIHt0ZXh0LCByZXBsYWNlOiB0cnVlfSk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUVBLElBQUlJLFFBQVEsR0FBRyxDQUFDLENBQUM7RUFBRUMsT0FBTyxHQUFHLENBQUMsQ0FBQztFQUFFQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO0FBQUNDLE9BQUEsQ0FBQUYsT0FBQSxHQUFBQSxPQUFBO0FBQUFFLE9BQUEsQ0FBQUgsUUFBQSxHQUFBQSxRQUFBO0FBRWpELFNBQVNJLE1BQU1BLENBQUVDLENBQUMsRUFBRTtFQUNsQixPQUFPQyxlQUFDLENBQUNDLFFBQVEsQ0FBQ0YsQ0FBQyxDQUFDLEdBQUlBLENBQUMsQ0FBQ0csV0FBVyxDQUFDLENBQUMsS0FBSyxNQUFNLEdBQUksQ0FBQyxDQUFDSCxDQUFDO0FBQzNEO0FBRUFMLFFBQVEsQ0FBQ1MsTUFBTSxHQUFHLGVBQWVBLE1BQU1BLENBQUEsRUFBSTtFQUN6QyxPQUFPLE1BQU0sSUFBSSxDQUFDQyxZQUFZLENBQUNDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLGlCQUFpQixFQUFFLEtBQUssQ0FBQztBQUMxRSxDQUFDO0FBRURaLFFBQVEsQ0FBQ2EsWUFBWSxHQUFHLGdCQUFnQkMsU0FBUyxFQUFFQyxTQUFTLEVBQUU7RUFDNUQsT0FBTyxNQUFNLElBQUksQ0FBQ0wsWUFBWSxDQUFDQyxPQUFPLENBQUNDLE9BQU8sQ0FBRSxZQUFXRyxTQUFVLGNBQWFELFNBQVUsRUFBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENB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
20
+ /**
21
+ * @type {import('./mixins').UIA2ElementMixin}
22
+ * @satisfies {import('@appium/types').ExternalDriver}
23
+ */
24
+ const ElementMixin = {
25
+ async active() {
26
+ return /** @type {import('@appium/types').Element} */ (await /** @type {UiAutomator2Server} */ (this.uiautomator2).jwproxy.command('/element/active', 'GET'));
27
+ },
28
+ async getAttribute(attribute, elementId) {
29
+ return String(await /** @type {UiAutomator2Server} */ (this.uiautomator2).jwproxy.command(`/element/${elementId}/attribute/${attribute}`, 'GET', {}));
30
+ },
31
+ async elementDisplayed(elementId) {
32
+ return toBool(await this.getAttribute('displayed', elementId));
33
+ },
34
+ async elementEnabled(elementId) {
35
+ return toBool(await this.getAttribute('enabled', elementId));
36
+ },
37
+ async elementSelected(elementId) {
38
+ return toBool(await this.getAttribute('selected', elementId));
39
+ },
40
+ async getName(elementId) {
41
+ return /** @type {string} */ (await /** @type {UiAutomator2Server} */ (this.uiautomator2).jwproxy.command(`/element/${elementId}/name`, 'GET', {}));
42
+ },
43
+ async getLocation(elementId) {
44
+ return /** @type {import('@appium/types').Position} */ (await /** @type {UiAutomator2Server} */ (this.uiautomator2).jwproxy.command(`/element/${elementId}/location`, 'GET', {}));
45
+ },
46
+ async getSize(elementId) {
47
+ return /** @type {import('@appium/types').Size} */ (await /** @type {UiAutomator2Server} */ (this.uiautomator2).jwproxy.command(`/element/${elementId}/size`, 'GET', {}));
48
+ },
49
+ async touchLongClick(element, x, y, duration) {
50
+ let params = { element, x, y, duration };
51
+ await /** @type {UiAutomator2Server} */ (this.uiautomator2).jwproxy.command(`/touch/longclick`, 'POST', { params });
52
+ },
53
+ async touchDown(element, x, y) {
54
+ let params = { element, x, y };
55
+ await /** @type {UiAutomator2Server} */ (this.uiautomator2).jwproxy.command(`/touch/down`, 'POST', { params });
56
+ },
57
+ async touchUp(element, x, y) {
58
+ let params = { element, x, y };
59
+ await /** @type {UiAutomator2Server} */ (this.uiautomator2).jwproxy.command(`/touch/up`, 'POST', { params });
60
+ },
61
+ async touchMove(element, x, y) {
62
+ let params = { element, x, y };
63
+ await /** @type {UiAutomator2Server} */ (this.uiautomator2).jwproxy.command(`/touch/move`, 'POST', { params });
64
+ },
65
+ async doSetElementValue(params) {
66
+ await /** @type {UiAutomator2Server} */ (this.uiautomator2).jwproxy.command(`/element/${params.elementId}/value`, 'POST', params);
67
+ },
68
+ async setValueImmediate(keys, elementId) {
69
+ await /** @type {UiAutomator2Server} */ (this.uiautomator2).jwproxy.command(`/element/${elementId}/value`, 'POST', {
70
+ elementId,
71
+ text: lodash_1.default.isArray(keys) ? keys.join('') : keys,
72
+ replace: false,
73
+ });
74
+ },
75
+ async getText(elementId) {
76
+ return String(await /** @type {UiAutomator2Server} */ (this.uiautomator2).jwproxy.command(`/element/${elementId}/text`, 'GET', {}));
77
+ },
78
+ async click(element) {
79
+ await /** @type {UiAutomator2Server} */ (this.uiautomator2).jwproxy.command(`/element/${element}/click`, 'POST', { element });
80
+ },
81
+ async getElementScreenshot(element) {
82
+ return String(await /** @type {UiAutomator2Server} */ (this.uiautomator2).jwproxy.command(`/element/${element}/screenshot`, 'GET', {}));
83
+ },
84
+ async tap(elementId = null, x = null, y = null, count = 1) {
85
+ const areCoordinatesDefined = support_1.util.hasValue(x) && support_1.util.hasValue(y);
86
+ if (!support_1.util.hasValue(elementId) && !areCoordinatesDefined) {
87
+ throw new Error(`Either element id to tap or both absolute coordinates should be defined`);
88
+ }
89
+ for (let i = 0; i < count; i++) {
90
+ if (support_1.util.hasValue(elementId) && !areCoordinatesDefined) {
91
+ // we are either tapping on the default location of the element
92
+ // or an offset from the top left corner
93
+ await /** @type {UiAutomator2Server} */ (this.uiautomator2).jwproxy.command(`/element/${elementId}/click`, 'POST');
94
+ }
95
+ else {
96
+ await /** @type {UiAutomator2Server} */ (this.uiautomator2).jwproxy.command(`/appium/tap`, 'POST', {
97
+ x,
98
+ y,
99
+ [driver_1.W3C_ELEMENT_KEY]: elementId,
100
+ });
101
+ }
102
+ }
103
+ },
104
+ async clear(elementId) {
105
+ await /** @type {UiAutomator2Server} */ (this.uiautomator2).jwproxy.command(`/element/${elementId}/clear`, 'POST', {
106
+ elementId,
107
+ });
108
+ },
109
+ async getElementRect(elementId) {
110
+ const chromedriver = /** @type {import('appium-chromedriver').default} */ (this.chromedriver);
111
+ if (this.isWebContext()) {
112
+ this.log.debug(`Detected downstream chromedriver protocol: ${chromedriver.jwproxy.downstreamProtocol}`);
113
+ if (chromedriver.jwproxy.downstreamProtocol === driver_1.PROTOCOLS.MJSONWP) {
114
+ const [{ x, y }, { width, height }] =
115
+ /** @type {[import('@appium/types').Position, import('@appium/types').Size]} */ (await bluebird_1.default.all([
116
+ chromedriver.jwproxy.command(`/element/${elementId}/location`, 'GET'),
117
+ chromedriver.jwproxy.command(`/element/${elementId}/size`, 'GET'),
118
+ ]));
119
+ return { x, y, width, height };
120
+ }
121
+ return /** @type {import('@appium/types').Rect} */ (await chromedriver.jwproxy.command(`/element/${elementId}/rect`, 'GET'));
122
+ }
123
+ return /** @type {import('@appium/types').Rect} */ (await /** @type {UiAutomator2Server} */ (this.uiautomator2).jwproxy.command(`/element/${elementId}/rect`, 'GET'));
124
+ },
125
+ /**
126
+ * Sends text to the given element by replacing its previous content
127
+ *
128
+ * @param {import('./types').ReplaceValueOptions} opts
129
+ * @throws {Error} If there was a faulre while setting the text
130
+ */
131
+ async mobileReplaceElementValue(opts) {
132
+ const { elementId, text } = (0, utils_1.requireArgs)(['elementId', 'text'], opts);
133
+ await /** @type {UiAutomator2Server} */ (this.uiautomator2).jwproxy.command(`/element/${elementId}/value`, 'POST', {
134
+ text,
135
+ replace: true,
136
+ });
137
+ },
138
+ };
139
+ (0, mixins_1.mixin)(ElementMixin);
140
+ /**
141
+ * @typedef {import('../uiautomator2').UiAutomator2Server} UiAutomator2Server
142
+ */
143
+ //# sourceMappingURL=element.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"element.js","names":["_lodash","_interopRequireDefault","require","_support","_driver","_utils","commands","helpers","extensions","exports","toBool","s","_","isString","toLowerCase","active","uiautomator2","jwproxy","command","getAttribute","attribute","elementId","elementDisplayed","elementEnabled","elementSelected","getName","getLocation","getSize","touchLongClick","element","x","y","duration","params","touchDown","touchUp","touchMove","doSetElementValue","setValueImmediate","keys","text","isArray","join","replace","getText","click","getElementScreenshot","tap","count","areCoordinatesDefined","util","hasValue","Error","i","W3C_ELEMENT_KEY","clear","getElementRect","isWebContext","log","debug","chromedriver","downstreamProtocol","PROTOCOLS","MJSONWP","width","height","mobileReplaceElementValue","opts","requireArgs","Object","assign","_default","default"],"sources":["../../../lib/commands/element.js"],"sourcesContent":["import _ from 'lodash';\nimport { util } from 'appium/support';\nimport { PROTOCOLS, W3C_ELEMENT_KEY } from 'appium/driver';\nimport { requireArgs } from '../utils';\n\nlet commands = {}, helpers = {}, extensions = {};\n\nfunction toBool (s) {\n return _.isString(s) ? (s.toLowerCase() === 'true') : !!s;\n}\n\ncommands.active = async function active () {\n return await this.uiautomator2.jwproxy.command('/element/active', 'GET');\n};\n\ncommands.getAttribute = async function (attribute, elementId) {\n return await this.uiautomator2.jwproxy.command(`/element/${elementId}/attribute/${attribute}`, 'GET', {});\n};\n\ncommands.elementDisplayed = async function (elementId) {\n return toBool(await this.getAttribute('displayed', elementId));\n};\n\ncommands.elementEnabled = async function (elementId) {\n return toBool(await this.getAttribute('enabled', elementId));\n};\n\ncommands.elementSelected = async function (elementId) {\n return toBool(await this.getAttribute('selected', elementId));\n};\n\ncommands.getName = async function (elementId) {\n return await this.uiautomator2.jwproxy.command(`/element/${elementId}/name`, 'GET', {});\n};\n\ncommands.getLocation = async function (elementId) {\n return await this.uiautomator2.jwproxy.command(`/element/${elementId}/location`, 'GET', {});\n};\n\ncommands.getSize = async function (elementId) {\n return await this.uiautomator2.jwproxy.command(`/element/${elementId}/size`, 'GET', {});\n};\n\ncommands.touchLongClick = async function (element, x, y, duration) {\n let params = {element, x, y, duration};\n return await this.uiautomator2.jwproxy.command(`/touch/longclick`, 'POST', {params});\n};\n\ncommands.touchDown = async function (element, x, y) {\n let params = {element, x, y};\n return await this.uiautomator2.jwproxy.command(`/touch/down`, 'POST', {params});\n};\n\ncommands.touchUp = async function (element, x, y) {\n let params = {element, x, y};\n return await this.uiautomator2.jwproxy.command(`/touch/up`, 'POST', {params});\n};\n\ncommands.touchMove = async function (element, x, y) {\n let params = {element, x, y};\n return await this.uiautomator2.jwproxy.command(`/touch/move`, 'POST', {params});\n};\n\nhelpers.doSetElementValue = async function (params) {\n return await this.uiautomator2.jwproxy.command(`/element/${params.elementId}/value`, 'POST', params);\n};\n\ncommands.setValueImmediate = async function (keys, elementId) {\n return await this.uiautomator2.jwproxy.command(`/element/${elementId}/value`, 'POST', {\n elementId,\n text: _.isArray(keys) ? keys.join('') : keys,\n replace: false\n });\n};\n\ncommands.getText = async function (elementId) {\n return await this.uiautomator2.jwproxy.command(`/element/${elementId}/text`, 'GET', {});\n};\n\ncommands.click = async function (element) {\n return await this.uiautomator2.jwproxy.command(`/element/${element}/click`, 'POST', {element});\n};\n\ncommands.getElementScreenshot = async function (element) {\n return await this.uiautomator2.jwproxy.command(`/element/${element}/screenshot`, 'GET', {});\n};\n\ncommands.tap = async function (elementId = null, x = null, y = null, count = 1) {\n const areCoordinatesDefined = util.hasValue(x) && util.hasValue(y);\n if (!util.hasValue(elementId) && !areCoordinatesDefined) {\n throw new Error(`Either element id to tap or both absolute coordinates should be defined`);\n }\n\n for (let i = 0; i < count; i++) {\n if (util.hasValue(elementId) && !areCoordinatesDefined) {\n // we are either tapping on the default location of the element\n // or an offset from the top left corner\n await this.uiautomator2.jwproxy.command(`/element/${elementId}/click`, 'POST');\n } else {\n await this.uiautomator2.jwproxy.command(`/appium/tap`, 'POST', {\n x, y,\n [W3C_ELEMENT_KEY]: elementId,\n });\n }\n }\n};\n\ncommands.clear = async function (elementId) {\n return await this.uiautomator2.jwproxy.command(`/element/${elementId}/clear`, 'POST', {elementId});\n};\n\ncommands.getElementRect = async function (elementId) {\n if (this.isWebContext()) {\n this.log.debug(`Detected downstream chromedriver protocol: ${this.chromedriver.jwproxy.downstreamProtocol}`);\n if (this.chromedriver.jwproxy.downstreamProtocol === PROTOCOLS.MJSONWP) {\n const {x, y} = await this.chromedriver.jwproxy.command(`/element/${elementId}/location`, 'GET');\n const {width, height} = await this.chromedriver.jwproxy.command(`/element/${elementId}/size`, 'GET');\n return {x, y, width, height};\n }\n return await this.chromedriver.jwproxy.command(`/element/${elementId}/rect`, 'GET');\n }\n return await this.uiautomator2.jwproxy.command(`/element/${elementId}/rect`, 'GET');\n};\n\n/**\n * @typedef {Object} ReplaceValueOptions\n * @property {string} elementId The id of the element whose content will be replaced\n * @property {string} text The actual text to set\n */\n\n/**\n * Sends text to the given element by replacing its previous content\n *\n * @param {ReplaceValueOptions} opts\n * @throws {Error} If there was a faulre while setting the text\n */\ncommands.mobileReplaceElementValue = async function mobileReplaceElementValue (opts = {}) {\n const {elementId, text} = requireArgs(['elementId', 'text'], opts);\n return await this.uiautomator2.jwproxy.command(`/element/${elementId}/value`, 'POST', {text, replace: true});\n};\n\nObject.assign(extensions, commands, helpers);\nexport { commands, helpers };\nexport default extensions;\n"],"mappings":";;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAEA,IAAII,QAAQ,GAAG,CAAC,CAAC;EAAEC,OAAO,GAAG,CAAC,CAAC;EAAEC,UAAU,GAAG,CAAC,CAAC;AAACC,OAAA,CAAAF,OAAA,GAAAA,OAAA;AAAAE,OAAA,CAAAH,QAAA,GAAAA,QAAA;AAEjD,SAASI,MAAMA,CAAEC,CAAC,EAAE;EAClB,OAAOC,eAAC,CAACC,QAAQ,CAACF,CAAC,CAAC,GAAIA,CAAC,CAACG,WAAW,CAAC,CAAC,KAAK,MAAM,GAAI,CAAC,CAACH,CAAC;AAC3D;AAEAL,QAAQ,CAACS,MAAM,GAAG,eAAeA,MAAMA,CAAA,EAAI;EACzC,OAAO,MAAM,IAAI,CAACC,YAAY,CAACC,OAAO,CAACC,OAAO,CAAC,iBAAiB,EAAE,KAAK,CAAC;AAC1E,CAAC;AAEDZ,QAAQ,CAACa,YAAY,GAAG,gBAAgBC,SAAS,EAAEC,SAAS,EAAE;EAC5D,OAAO,MAAM,IAAI,CAACL,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,YAAWG,SAAU,cAAaD,SAAU,EAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC3G,CAAC;AAEDd,QAAQ,CAACgB,gBAAgB,GAAG,gBAAgBD,SAAS,EAAE;EACrD,OAAOX,MAAM,CAAC,MAAM,IAAI,CAACS,YAAY,CAAC,WAAW,EAAEE,SAAS,CAAC,CAAC;AAChE,CAAC;AAEDf,QAAQ,CAACiB,cAAc,GAAG,gBAAgBF,SAAS,EAAE;EACnD,OAAOX,MAAM,CAAC,MAAM,IAAI,CAACS,YAAY,CAAC,SAAS,EAAEE,SAAS,CAAC,CAAC;AAC9D,CAAC;AAEDf,QAAQ,CAACkB,eAAe,GAAG,gBAAgBH,SAAS,EAAE;EACpD,OAAOX,MAAM,CAAC,MAAM,IAAI,CAACS,YAAY,CAAC,UAAU,EAAEE,SAAS,CAAC,CAAC;AAC/D,CAAC;AAEDf,QAAQ,CAACmB,OAAO,GAAG,gBAAgBJ,SAAS,EAAE;EAC5C,OAAO,MAAM,IAAI,CAACL,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,YAAWG,SAAU,OAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzF,CAAC;AAEDf,QAAQ,CAACoB,WAAW,GAAG,gBAAgBL,SAAS,EAAE;EAChD,OAAO,MAAM,IAAI,CAACL,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,YAAWG,SAAU,WAAU,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7F,CAAC;AAEDf,QAAQ,CAACqB,OAAO,GAAG,gBAAgBN,SAAS,EAAE;EAC5C,OAAO,MAAM,IAAI,CAACL,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,YAAWG,SAAU,OAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzF,CAAC;AAEDf,QAAQ,CAACsB,cAAc,GAAG,gBAAgBC,OAAO,EAAEC,CAAC,EAAEC,CAAC,EAAEC,QAAQ,EAAE;EACjE,IAAIC,MAAM,GAAG;IAACJ,OAAO;IAAEC,CAAC;IAAEC,CAAC;IAAEC;EAAQ,CAAC;EACtC,OAAO,MAAM,IAAI,CAAChB,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,kBAAiB,EAAE,MAAM,EAAE;IAACe;EAAM,CAAC,CAAC;AACtF,CAAC;AAED3B,QAAQ,CAAC4B,SAAS,GAAG,gBAAgBL,OAAO,EAAEC,CAAC,EAAEC,CAAC,EAAE;EAClD,IAAIE,MAAM,GAAG;IAACJ,OAAO;IAAEC,CAAC;IAAEC;EAAC,CAAC;EAC5B,OAAO,MAAM,IAAI,CAACf,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,aAAY,EAAE,MAAM,EAAE;IAACe;EAAM,CAAC,CAAC;AACjF,CAAC;AAED3B,QAAQ,CAAC6B,OAAO,GAAG,gBAAgBN,OAAO,EAAEC,CAAC,EAAEC,CAAC,EAAE;EAChD,IAAIE,MAAM,GAAG;IAACJ,OAAO;IAAEC,CAAC;IAAEC;EAAC,CAAC;EAC5B,OAAO,MAAM,IAAI,CAACf,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,WAAU,EAAE,MAAM,EAAE;IAACe;EAAM,CAAC,CAAC;AAC/E,CAAC;AAED3B,QAAQ,CAAC8B,SAAS,GAAG,gBAAgBP,OAAO,EAAEC,CAAC,EAAEC,CAAC,EAAE;EAClD,IAAIE,MAAM,GAAG;IAACJ,OAAO;IAAEC,CAAC;IAAEC;EAAC,CAAC;EAC5B,OAAO,MAAM,IAAI,CAACf,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,aAAY,EAAE,MAAM,EAAE;IAACe;EAAM,CAAC,CAAC;AACjF,CAAC;AAED1B,OAAO,CAAC8B,iBAAiB,GAAG,gBAAgBJ,MAAM,EAAE;EAClD,OAAO,MAAM,IAAI,CAACjB,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,YAAWe,MAAM,CAACZ,SAAU,QAAO,EAAE,MAAM,EAAEY,MAAM,CAAC;AACtG,CAAC;AAED3B,QAAQ,CAACgC,iBAAiB,GAAG,gBAAgBC,IAAI,EAAElB,SAAS,EAAE;EAC5D,OAAO,MAAM,IAAI,CAACL,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,YAAWG,SAAU,QAAO,EAAE,MAAM,EAAE;IACpFA,SAAS;IACTmB,IAAI,EAAE5B,eAAC,CAAC6B,OAAO,CAACF,IAAI,CAAC,GAAGA,IAAI,CAACG,IAAI,CAAC,EAAE,CAAC,GAAGH,IAAI;IAC5CI,OAAO,EAAE;EACX,CAAC,CAAC;AACJ,CAAC;AAEDrC,QAAQ,CAACsC,OAAO,GAAG,gBAAgBvB,SAAS,EAAE;EAC5C,OAAO,MAAM,IAAI,CAACL,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,YAAWG,SAAU,OAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACzF,CAAC;AAEDf,QAAQ,CAACuC,KAAK,GAAG,gBAAgBhB,OAAO,EAAE;EACxC,OAAO,MAAM,IAAI,CAACb,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,YAAWW,OAAQ,QAAO,EAAE,MAAM,EAAE;IAACA;EAAO,CAAC,CAAC;AAChG,CAAC;AAEDvB,QAAQ,CAACwC,oBAAoB,GAAG,gBAAgBjB,OAAO,EAAE;EACvD,OAAO,MAAM,IAAI,CAACb,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,YAAWW,OAAQ,aAAY,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7F,CAAC;AAEDvB,QAAQ,CAACyC,GAAG,GAAG,gBAAgB1B,SAAS,GAAG,IAAI,EAAES,CAAC,GAAG,IAAI,EAAEC,CAAC,GAAG,IAAI,EAAEiB,KAAK,GAAG,CAAC,EAAE;EAC9E,MAAMC,qBAAqB,GAAGC,aAAI,CAACC,QAAQ,CAACrB,CAAC,CAAC,IAAIoB,aAAI,CAACC,QAAQ,CAACpB,CAAC,CAAC;EAClE,IAAI,CAACmB,aAAI,CAACC,QAAQ,CAAC9B,SAAS,CAAC,IAAI,CAAC4B,qBAAqB,EAAE;IACvD,MAAM,IAAIG,KAAK,CAAE,yEAAwE,CAAC;EAC5F;EAEA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,KAAK,EAAEK,CAAC,EAAE,EAAE;IAC9B,IAAIH,aAAI,CAACC,QAAQ,CAAC9B,SAAS,CAAC,IAAI,CAAC4B,qBAAqB,EAAE;MAGtD,MAAM,IAAI,CAACjC,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,YAAWG,SAAU,QAAO,EAAE,MAAM,CAAC;IAChF,CAAC,MAAM;MACL,MAAM,IAAI,CAACL,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,aAAY,EAAE,MAAM,EAAE;QAC7DY,CAAC;QAAEC,CAAC;QACJ,CAACuB,uBAAe,GAAGjC;MACrB,CAAC,CAAC;IACJ;EACF;AACF,CAAC;AAEDf,QAAQ,CAACiD,KAAK,GAAG,gBAAgBlC,SAAS,EAAE;EAC1C,OAAO,MAAM,IAAI,CAACL,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,YAAWG,SAAU,QAAO,EAAE,MAAM,EAAE;IAACA;EAAS,CAAC,CAAC;AACpG,CAAC;AAEDf,QAAQ,CAACkD,cAAc,GAAG,gBAAgBnC,SAAS,EAAE;EACnD,IAAI,IAAI,CAACoC,YAAY,CAAC,CAAC,EAAE;IACvB,IAAI,CAACC,GAAG,CAACC,KAAK,CAAE,8CAA6C,IAAI,CAACC,YAAY,CAAC3C,OAAO,CAAC4C,kBAAmB,EAAC,CAAC;IAC5G,IAAI,IAAI,CAACD,YAAY,CAAC3C,OAAO,CAAC4C,kBAAkB,KAAKC,iBAAS,CAACC,OAAO,EAAE;MACtE,MAAM;QAACjC,CAAC;QAAEC;MAAC,CAAC,GAAG,MAAM,IAAI,CAAC6B,YAAY,CAAC3C,OAAO,CAACC,OAAO,CAAE,YAAWG,SAAU,WAAU,EAAE,KAAK,CAAC;MAC/F,MAAM;QAAC2C,KAAK;QAAEC;MAAM,CAAC,GAAG,MAAM,IAAI,CAACL,YAAY,CAAC3C,OAAO,CAACC,OAAO,CAAE,YAAWG,SAAU,OAAM,EAAE,KAAK,CAAC;MACpG,OAAO;QAACS,CAAC;QAAEC,CAAC;QAAEiC,KAAK;QAAEC;MAAM,CAAC;IAC9B;IACA,OAAO,MAAM,IAAI,CAACL,YAAY,CAAC3C,OAAO,CAACC,OAAO,CAAE,YAAWG,SAAU,OAAM,EAAE,KAAK,CAAC;EACrF;EACA,OAAO,MAAM,IAAI,CAACL,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,YAAWG,SAAU,OAAM,EAAE,KAAK,CAAC;AACrF,CAAC;AAcDf,QAAQ,CAAC4D,yBAAyB,GAAG,eAAeA,yBAAyBA,CAAEC,IAAI,GAAG,CAAC,CAAC,EAAE;EACxF,MAAM;IAAC9C,SAAS;IAAEmB;EAAI,CAAC,GAAG,IAAA4B,kBAAW,EAAC,CAAC,WAAW,EAAE,MAAM,CAAC,EAAED,IAAI,CAAC;EAClE,OAAO,MAAM,IAAI,CAACnD,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,YAAWG,SAAU,QAAO,EAAE,MAAM,EAAE;IAACmB,IAAI;IAAEG,OAAO,EAAE;EAAI,CAAC,CAAC;AAC9G,CAAC;AAED0B,MAAM,CAACC,MAAM,CAAC9D,UAAU,EAAEF,QAAQ,EAAEC,OAAO,CAAC;AAAC,IAAAgE,QAAA,GAE9B/D,UAAU;AAAAC,OAAA,CAAA+D,OAAA,GAAAD,QAAA"}
1
+ {"version":3,"file":"element.js","sourceRoot":"","sources":["../../../lib/commands/element.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export type Element = import('@appium/types').Element;
2
+ //# sourceMappingURL=find.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find.d.ts","sourceRoot":"","sources":["../../../lib/commands/find.js"],"names":[],"mappings":"sBAmDa,OAAO,eAAe,EAAE,OAAO"}
@@ -1,32 +1,44 @@
1
1
  "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.helpers = exports.default = void 0;
8
- require("source-map-support/register");
9
- var _cssConverter = _interopRequireDefault(require("../css-converter"));
10
- const helpers = {};
11
- exports.helpers = helpers;
2
+ // @ts-check
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const css_converter_1 = __importDefault(require("../css-converter"));
8
+ const mixins_1 = require("./mixins");
9
+ // we override the xpath search for this first-visible-child selector, which
10
+ // looks like /*[@firstVisible="true"]
12
11
  const MAGIC_FIRST_VIS_CHILD_SEL = /\/\*\[@firstVisible ?= ?('|")true\1\]/;
13
12
  const MAGIC_SCROLLABLE_SEL = /\/\/\*\[@scrollable ?= ?('|")true\1\]/;
14
13
  const MAGIC_SCROLLABLE_BY = 'new UiSelector().scrollable(true)';
15
- helpers.doFindElementOrEls = async function (params) {
16
- if (params.strategy === 'xpath' && MAGIC_FIRST_VIS_CHILD_SEL.test(params.selector)) {
17
- let elementId = params.context;
18
- return await this.uiautomator2.jwproxy.command(`/appium/element/${elementId}/first_visible`, 'GET', {});
19
- }
20
- if (params.strategy === 'xpath' && MAGIC_SCROLLABLE_SEL.test(params.selector)) {
21
- params.strategy = '-android uiautomator';
22
- params.selector = MAGIC_SCROLLABLE_BY;
23
- }
24
- if (params.strategy === 'css selector') {
25
- params.strategy = '-android uiautomator';
26
- params.selector = new _cssConverter.default(params.selector, this.opts.appPackage).toUiAutomatorSelector();
27
- }
28
- return await this.uiautomator2.jwproxy.command(`/element${params.multiple ? 's' : ''}`, 'POST', params);
14
+ /**
15
+ * @type {import('./mixins').UIA2FindMixin}
16
+ * @satisfies {import('@appium/types').ExternalDriver}
17
+ */
18
+ const FindMixin = {
19
+ /**
20
+ * @privateRemarks Overriding helpers.doFindElementOrEls functionality of appium-android-driver,
21
+ * this.element initialized in find.js of appium-android-drive.
22
+ */
23
+ async doFindElementOrEls(params) {
24
+ const uiautomator2 = /** @type {import('../uiautomator2').UiAutomator2Server} */ (this.uiautomator2);
25
+ if (params.strategy === 'xpath' && MAGIC_FIRST_VIS_CHILD_SEL.test(params.selector)) {
26
+ let elementId = params.context;
27
+ return /** @type {Element} */ (await uiautomator2.jwproxy.command(`/appium/element/${elementId}/first_visible`, 'GET', {}));
28
+ }
29
+ if (params.strategy === 'xpath' && MAGIC_SCROLLABLE_SEL.test(params.selector)) {
30
+ params.strategy = '-android uiautomator';
31
+ params.selector = MAGIC_SCROLLABLE_BY;
32
+ }
33
+ if (params.strategy === 'css selector') {
34
+ params.strategy = '-android uiautomator';
35
+ params.selector = new css_converter_1.default(params.selector, this.opts.appPackage).toUiAutomatorSelector();
36
+ }
37
+ return /** @type {Element|Element[]} */ (await uiautomator2.jwproxy.command(`/element${params.multiple ? 's' : ''}`, 'POST', params));
38
+ },
29
39
  };
30
- var _default = helpers;
31
- exports.default = _default;
32
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3NzQ29udmVydGVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJoZWxwZXJzIiwiZXhwb3J0cyIsIk1BR0lDX0ZJUlNUX1ZJU19DSElMRF9TRUwiLCJNQUdJQ19TQ1JPTExBQkxFX1NFTCIsIk1BR0lDX1NDUk9MTEFCTEVfQlkiLCJkb0ZpbmRFbGVtZW50T3JFbHMiLCJwYXJhbXMiLCJzdHJhdGVneSIsInRlc3QiLCJzZWxlY3RvciIsImVsZW1lbnRJZCIsImNvbnRleHQiLCJ1aWF1dG9tYXRvcjIiLCJqd3Byb3h5IiwiY29tbWFuZCIsIkNzc0NvbnZlcnRlciIsIm9wdHMiLCJhcHBQYWNrYWdlIiwidG9VaUF1dG9tYXRvclNlbGVjdG9yIiwibXVsdGlwbGUiLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvZmluZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ3NzQ29udmVydGVyIGZyb20gJy4uL2Nzcy1jb252ZXJ0ZXInO1xuXG5jb25zdCBoZWxwZXJzID0ge307XG5cbi8vIHdlIG92ZXJyaWRlIHRoZSB4cGF0aCBzZWFyY2ggZm9yIHRoaXMgZmlyc3QtdmlzaWJsZS1jaGlsZCBzZWxlY3Rvciwgd2hpY2hcbi8vIGxvb2tzIGxpa2UgLypbQGZpcnN0VmlzaWJsZT1cInRydWVcIl1cbmNvbnN0IE1BR0lDX0ZJUlNUX1ZJU19DSElMRF9TRUwgPSAvXFwvXFwqXFxbQGZpcnN0VmlzaWJsZSA/PSA/KCd8XCIpdHJ1ZVxcMVxcXS87XG5cbmNvbnN0IE1BR0lDX1NDUk9MTEFCTEVfU0VMID0gL1xcL1xcL1xcKlxcW0BzY3JvbGxhYmxlID89ID8oJ3xcIil0cnVlXFwxXFxdLztcbmNvbnN0IE1BR0lDX1NDUk9MTEFCTEVfQlkgPSAnbmV3IFVpU2VsZWN0b3IoKS5zY3JvbGxhYmxlKHRydWUpJztcblxuLyoqXG4gKiBPdmVycmlkaW5nIGhlbHBlcnMuZG9GaW5kRWxlbWVudE9yRWxzIGZ1bmN0aW9uYWxpdHkgb2YgYXBwaXVtLWFuZHJvaWQtZHJpdmVyLFxuICogdGhpcy5lbGVtZW50IGluaXRpYWxpemVkIGluIGZpbmQuanMgb2YgYXBwaXVtLWFuZHJvaWQtZHJpdmUuXG4gKi9cbmhlbHBlcnMuZG9GaW5kRWxlbWVudE9yRWxzID0gYXN5bmMgZnVuY3Rpb24gKHBhcmFtcykge1xuICBpZiAocGFyYW1zLnN0cmF0ZWd5ID09PSAneHBhdGgnICYmIE1BR0lDX0ZJUlNUX1ZJU19DSElMRF9TRUwudGVzdChwYXJhbXMuc2VsZWN0b3IpKSB7XG4gICAgbGV0IGVsZW1lbnRJZCA9IHBhcmFtcy5jb250ZXh0O1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vZWxlbWVudC8ke2VsZW1lbnRJZH0vZmlyc3RfdmlzaWJsZWAsICdHRVQnLCB7fSk7XG4gIH1cbiAgaWYgKHBhcmFtcy5zdHJhdGVneSA9PT0gJ3hwYXRoJyAmJiBNQUdJQ19TQ1JPTExBQkxFX1NFTC50ZXN0KHBhcmFtcy5zZWxlY3RvcikpIHtcbiAgICBwYXJhbXMuc3RyYXRlZ3kgPSAnLWFuZHJvaWQgdWlhdXRvbWF0b3InO1xuICAgIHBhcmFtcy5zZWxlY3RvciA9IE1BR0lDX1NDUk9MTEFCTEVfQlk7XG4gIH1cbiAgaWYgKHBhcmFtcy5zdHJhdGVneSA9PT0gJ2NzcyBzZWxlY3RvcicpIHtcbiAgICBwYXJhbXMuc3RyYXRlZ3kgPSAnLWFuZHJvaWQgdWlhdXRvbWF0b3InO1xuICAgIHBhcmFtcy5zZWxlY3RvciA9IG5ldyBDc3NDb252ZXJ0ZXIocGFyYW1zLnNlbGVjdG9yLCB0aGlzLm9wdHMuYXBwUGFja2FnZSlcbiAgICAgIC50b1VpQXV0b21hdG9yU2VsZWN0b3IoKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudCR7cGFyYW1zLm11bHRpcGxlID8gJ3MnIDogJyd9YCwgJ1BPU1QnLCBwYXJhbXMpO1xufTtcblxuZXhwb3J0IHsgaGVscGVycyB9O1xuZXhwb3J0IGRlZmF1bHQgaGVscGVycztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxhQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxNQUFNQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBQUNDLE9BQUEsQ0FBQUQsT0FBQSxHQUFBQSxPQUFBO0FBSW5CLE1BQU1FLHlCQUF5QixHQUFHLHVDQUF1QztBQUV6RSxNQUFNQyxvQkFBb0IsR0FBRyx1Q0FBdUM7QUFDcEUsTUFBTUMsbUJBQW1CLEdBQUcsbUNBQW1DO0FBTS9ESixPQUFPLENBQUNLLGtCQUFrQixHQUFHLGdCQUFnQkMsTUFBTSxFQUFFO0VBQ25ELElBQUlBLE1BQU0sQ0FBQ0MsUUFBUSxLQUFLLE9BQU8sSUFBSUwseUJBQXlCLENBQUNNLElBQUksQ0FBQ0YsTUFBTSxDQUFDRyxRQUFRLENBQUMsRUFBRTtJQUNsRixJQUFJQyxTQUFTLEdBQUdKLE1BQU0sQ0FBQ0ssT0FBTztJQUM5QixPQUFPLE1BQU0sSUFBSSxDQUFDQyxZQUFZLENBQUNDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFFLG1CQUFrQkosU0FBVSxnQkFBZSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztFQUN6RztFQUNBLElBQUlKLE1BQU0sQ0FBQ0MsUUFBUSxLQUFLLE9BQU8sSUFBSUosb0JBQW9CLENBQUNLLElBQUksQ0FBQ0YsTUFBTSxDQUFDRyxRQUFRLENBQUMsRUFBRTtJQUM3RUgsTUFBTSxDQUFDQyxRQUFRLEdBQUcsc0JBQXNCO0lBQ3hDRCxNQUFNLENBQUNHLFFBQVEsR0FBR0wsbUJBQW1CO0VBQ3ZDO0VBQ0EsSUFBSUUsTUFBTSxDQUFDQyxRQUFRLEtBQUssY0FBYyxFQUFFO0lBQ3RDRCxNQUFNLENBQUNDLFFBQVEsR0FBRyxzQkFBc0I7SUFDeENELE1BQU0sQ0FBQ0csUUFBUSxHQUFHLElBQUlNLHFCQUFZLENBQUNULE1BQU0sQ0FBQ0csUUFBUSxFQUFFLElBQUksQ0FBQ08sSUFBSSxDQUFDQyxVQUFVLENBQUMsQ0FDdEVDLHFCQUFxQixDQUFDLENBQUM7RUFDNUI7RUFDQSxPQUFPLE1BQU0sSUFBSSxDQUFDTixZQUFZLENBQUNDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFFLFdBQVVSLE1BQU0sQ0FBQ2EsUUFBUSxHQUFHLEdBQUcsR0FBRyxFQUFHLEVBQUMsRUFBRSxNQUFNLEVBQUViLE1BQU0sQ0FBQztBQUN6RyxDQUFDO0FBQUMsSUFBQWMsUUFBQSxHQUdhcEIsT0FBTztBQUFBQyxPQUFBLENBQUFvQixPQUFBLEdBQUFELFFBQUEifQ==
40
+ (0, mixins_1.mixin)(FindMixin);
41
+ /**
42
+ * @typedef {import('@appium/types').Element} Element
43
+ */
44
+ //# sourceMappingURL=find.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"find.js","names":["_cssConverter","_interopRequireDefault","require","helpers","exports","MAGIC_FIRST_VIS_CHILD_SEL","MAGIC_SCROLLABLE_SEL","MAGIC_SCROLLABLE_BY","doFindElementOrEls","params","strategy","test","selector","elementId","context","uiautomator2","jwproxy","command","CssConverter","opts","appPackage","toUiAutomatorSelector","multiple","_default","default"],"sources":["../../../lib/commands/find.js"],"sourcesContent":["import CssConverter from '../css-converter';\n\nconst helpers = {};\n\n// we override the xpath search for this first-visible-child selector, which\n// looks like /*[@firstVisible=\"true\"]\nconst MAGIC_FIRST_VIS_CHILD_SEL = /\\/\\*\\[@firstVisible ?= ?('|\")true\\1\\]/;\n\nconst MAGIC_SCROLLABLE_SEL = /\\/\\/\\*\\[@scrollable ?= ?('|\")true\\1\\]/;\nconst MAGIC_SCROLLABLE_BY = 'new UiSelector().scrollable(true)';\n\n/**\n * Overriding helpers.doFindElementOrEls functionality of appium-android-driver,\n * this.element initialized in find.js of appium-android-drive.\n */\nhelpers.doFindElementOrEls = async function (params) {\n if (params.strategy === 'xpath' && MAGIC_FIRST_VIS_CHILD_SEL.test(params.selector)) {\n let elementId = params.context;\n return await this.uiautomator2.jwproxy.command(`/appium/element/${elementId}/first_visible`, 'GET', {});\n }\n if (params.strategy === 'xpath' && MAGIC_SCROLLABLE_SEL.test(params.selector)) {\n params.strategy = '-android uiautomator';\n params.selector = MAGIC_SCROLLABLE_BY;\n }\n if (params.strategy === 'css selector') {\n params.strategy = '-android uiautomator';\n params.selector = new CssConverter(params.selector, this.opts.appPackage)\n .toUiAutomatorSelector();\n }\n return await this.uiautomator2.jwproxy.command(`/element${params.multiple ? 's' : ''}`, 'POST', params);\n};\n\nexport { helpers };\nexport default helpers;\n"],"mappings":";;;;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,MAAMC,OAAO,GAAG,CAAC,CAAC;AAACC,OAAA,CAAAD,OAAA,GAAAA,OAAA;AAInB,MAAME,yBAAyB,GAAG,uCAAuC;AAEzE,MAAMC,oBAAoB,GAAG,uCAAuC;AACpE,MAAMC,mBAAmB,GAAG,mCAAmC;AAM/DJ,OAAO,CAACK,kBAAkB,GAAG,gBAAgBC,MAAM,EAAE;EACnD,IAAIA,MAAM,CAACC,QAAQ,KAAK,OAAO,IAAIL,yBAAyB,CAACM,IAAI,CAACF,MAAM,CAACG,QAAQ,CAAC,EAAE;IAClF,IAAIC,SAAS,GAAGJ,MAAM,CAACK,OAAO;IAC9B,OAAO,MAAM,IAAI,CAACC,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,mBAAkBJ,SAAU,gBAAe,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;EACzG;EACA,IAAIJ,MAAM,CAACC,QAAQ,KAAK,OAAO,IAAIJ,oBAAoB,CAACK,IAAI,CAACF,MAAM,CAACG,QAAQ,CAAC,EAAE;IAC7EH,MAAM,CAACC,QAAQ,GAAG,sBAAsB;IACxCD,MAAM,CAACG,QAAQ,GAAGL,mBAAmB;EACvC;EACA,IAAIE,MAAM,CAACC,QAAQ,KAAK,cAAc,EAAE;IACtCD,MAAM,CAACC,QAAQ,GAAG,sBAAsB;IACxCD,MAAM,CAACG,QAAQ,GAAG,IAAIM,qBAAY,CAACT,MAAM,CAACG,QAAQ,EAAE,IAAI,CAACO,IAAI,CAACC,UAAU,CAAC,CACtEC,qBAAqB,CAAC,CAAC;EAC5B;EACA,OAAO,MAAM,IAAI,CAACN,YAAY,CAACC,OAAO,CAACC,OAAO,CAAE,WAAUR,MAAM,CAACa,QAAQ,GAAG,GAAG,GAAG,EAAG,EAAC,EAAE,MAAM,EAAEb,MAAM,CAAC;AACzG,CAAC;AAAC,IAAAc,QAAA,GAGapB,OAAO;AAAAC,OAAA,CAAAoB,OAAA,GAAAD,QAAA"}
1
+ {"version":3,"file":"find.js","sourceRoot":"","sources":["../../../lib/commands/find.js"],"names":[],"mappings":";AAAA,YAAY;;;;;AAEZ,qEAA4C;AAC5C,qCAA+B;AAE/B,4EAA4E;AAC5E,sCAAsC;AACtC,MAAM,yBAAyB,GAAG,uCAAuC,CAAC;AAE1E,MAAM,oBAAoB,GAAG,uCAAuC,CAAC;AACrE,MAAM,mBAAmB,GAAG,mCAAmC,CAAC;AAEhE;;;GAGG;AACH,MAAM,SAAS,GAAG;IAChB;;;OAGG;IACH,KAAK,CAAC,kBAAkB,CAAC,MAAM;QAC7B,MAAM,YAAY,GAAG,2DAA2D,CAAC,CAC/E,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;YAClF,IAAI,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/B,OAAO,sBAAsB,CAAC,CAC5B,MAAM,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,SAAS,gBAAgB,EAAE,KAAK,EAAE,EAAE,CAAC,CAC5F,CAAC;SACH;QACD,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;YAC7E,MAAM,CAAC,QAAQ,GAAG,sBAAsB,CAAC;YACzC,MAAM,CAAC,QAAQ,GAAG,mBAAmB,CAAC;SACvC;QACD,IAAI,MAAM,CAAC,QAAQ,KAAK,cAAc,EAAE;YACtC,MAAM,CAAC,QAAQ,GAAG,sBAAsB,CAAC;YACzC,MAAM,CAAC,QAAQ,GAAG,IAAI,uBAAY,CAChC,MAAM,CAAC,QAAQ,EACf,IAAI,CAAC,IAAI,CAAC,UAAU,CACrB,CAAC,qBAAqB,EAAE,CAAC;SAC3B;QACD,OAAO,gCAAgC,CAAC,CACtC,MAAM,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAC5F,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,IAAA,cAAK,EAAC,SAAS,CAAC,CAAC;AAEjB;;GAEG"}
@@ -0,0 +1,4 @@
1
+ export type UiAutomator2Server = import('../uiautomator2').UiAutomator2Server;
2
+ export type ADB = import('appium-adb').ADB;
3
+ export type StringRecord<T = any> = import('@appium/types').StringRecord<T>;
4
+ //# sourceMappingURL=general.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"general.d.ts","sourceRoot":"","sources":["../../../lib/commands/general.js"],"names":[],"mappings":"iCA2Ra,OAAO,iBAAiB,EAAE,kBAAkB;kBAC5C,OAAO,YAAY,EAAE,GAAG;oCAKxB,OAAO,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC"}