appium-uiautomator2-driver 2.29.11 → 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 +7 -0
  2. package/build/index.d.ts +4 -0
  3. package/build/index.d.ts.map +1 -0
  4. package/build/index.js +8 -15
  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 -62
  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 -26
  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 -57
  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 -16
  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 -159
  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 -25
  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 -215
  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 -193
  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 -22
  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 -62
  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 -38
  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 -35
  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 -175
  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 -482
  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 +7 -9
  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 -29
  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 -10
  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 -17
  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 +340 -299
  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 +363 -492
  131. package/package.json +95 -69
  132. package/build/lib/desired-caps.js +0 -71
  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
@@ -1,162 +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 = exports.commands = {},
14
- helpers = exports.helpers = {},
15
- extensions = {};
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
+ */
16
17
  function toBool(s) {
17
- return _lodash.default.isString(s) ? s.toLowerCase() === 'true' : !!s;
18
+ return lodash_1.default.isString(s) ? s.toLowerCase() === 'true' : !!s;
18
19
  }
19
- commands.active = async function active() {
20
- return await this.uiautomator2.jwproxy.command('/element/active', 'GET');
21
- };
22
- commands.getAttribute = async function (attribute, elementId) {
23
- return await this.uiautomator2.jwproxy.command(`/element/${elementId}/attribute/${attribute}`, 'GET', {});
24
- };
25
- commands.elementDisplayed = async function (elementId) {
26
- return toBool(await this.getAttribute('displayed', elementId));
27
- };
28
- commands.elementEnabled = async function (elementId) {
29
- return toBool(await this.getAttribute('enabled', elementId));
30
- };
31
- commands.elementSelected = async function (elementId) {
32
- return toBool(await this.getAttribute('selected', elementId));
33
- };
34
- commands.getName = async function (elementId) {
35
- return await this.uiautomator2.jwproxy.command(`/element/${elementId}/name`, 'GET', {});
36
- };
37
- commands.getLocation = async function (elementId) {
38
- return await this.uiautomator2.jwproxy.command(`/element/${elementId}/location`, 'GET', {});
39
- };
40
- commands.getSize = async function (elementId) {
41
- return await this.uiautomator2.jwproxy.command(`/element/${elementId}/size`, 'GET', {});
42
- };
43
- commands.touchLongClick = async function (element, x, y, duration) {
44
- let params = {
45
- element,
46
- x,
47
- y,
48
- duration
49
- };
50
- return await this.uiautomator2.jwproxy.command(`/touch/longclick`, 'POST', {
51
- params
52
- });
53
- };
54
- commands.touchDown = async function (element, x, y) {
55
- let params = {
56
- element,
57
- x,
58
- y
59
- };
60
- return await this.uiautomator2.jwproxy.command(`/touch/down`, 'POST', {
61
- params
62
- });
63
- };
64
- commands.touchUp = async function (element, x, y) {
65
- let params = {
66
- element,
67
- x,
68
- y
69
- };
70
- return await this.uiautomator2.jwproxy.command(`/touch/up`, 'POST', {
71
- params
72
- });
73
- };
74
- commands.touchMove = async function (element, x, y) {
75
- let params = {
76
- element,
77
- x,
78
- y
79
- };
80
- return await this.uiautomator2.jwproxy.command(`/touch/move`, 'POST', {
81
- params
82
- });
83
- };
84
- helpers.doSetElementValue = async function (params) {
85
- return await this.uiautomator2.jwproxy.command(`/element/${params.elementId}/value`, 'POST', params);
86
- };
87
- commands.setValueImmediate = async function (keys, elementId) {
88
- return await this.uiautomator2.jwproxy.command(`/element/${elementId}/value`, 'POST', {
89
- elementId,
90
- text: _lodash.default.isArray(keys) ? keys.join('') : keys,
91
- replace: false
92
- });
93
- };
94
- commands.getText = async function (elementId) {
95
- return await this.uiautomator2.jwproxy.command(`/element/${elementId}/text`, 'GET', {});
96
- };
97
- commands.click = async function (element) {
98
- return await this.uiautomator2.jwproxy.command(`/element/${element}/click`, 'POST', {
99
- element
100
- });
101
- };
102
- commands.getElementScreenshot = async function (element) {
103
- return await this.uiautomator2.jwproxy.command(`/element/${element}/screenshot`, 'GET', {});
104
- };
105
- commands.tap = async function (elementId = null, x = null, y = null, count = 1) {
106
- const areCoordinatesDefined = _support.util.hasValue(x) && _support.util.hasValue(y);
107
- if (!_support.util.hasValue(elementId) && !areCoordinatesDefined) {
108
- throw new Error(`Either element id to tap or both absolute coordinates should be defined`);
109
- }
110
- for (let i = 0; i < count; i++) {
111
- if (_support.util.hasValue(elementId) && !areCoordinatesDefined) {
112
- await this.uiautomator2.jwproxy.command(`/element/${elementId}/click`, 'POST');
113
- } else {
114
- await this.uiautomator2.jwproxy.command(`/appium/tap`, 'POST', {
115
- x,
116
- y,
117
- [_driver.W3C_ELEMENT_KEY]: elementId
118
- });
119
- }
120
- }
121
- };
122
- commands.clear = async function (elementId) {
123
- return await this.uiautomator2.jwproxy.command(`/element/${elementId}/clear`, 'POST', {
124
- elementId
125
- });
126
- };
127
- commands.getElementRect = async function (elementId) {
128
- if (this.isWebContext()) {
129
- this.log.debug(`Detected downstream chromedriver protocol: ${this.chromedriver.jwproxy.downstreamProtocol}`);
130
- if (this.chromedriver.jwproxy.downstreamProtocol === _driver.PROTOCOLS.MJSONWP) {
131
- const {
132
- x,
133
- y
134
- } = await this.chromedriver.jwproxy.command(`/element/${elementId}/location`, 'GET');
135
- const {
136
- width,
137
- height
138
- } = await this.chromedriver.jwproxy.command(`/element/${elementId}/size`, 'GET');
139
- return {
140
- x,
141
- y,
142
- width,
143
- height
144
- };
145
- }
146
- return await this.chromedriver.jwproxy.command(`/element/${elementId}/rect`, 'GET');
147
- }
148
- return await this.uiautomator2.jwproxy.command(`/element/${elementId}/rect`, 'GET');
149
- };
150
- commands.mobileReplaceElementValue = async function mobileReplaceElementValue(opts = {}) {
151
- const {
152
- elementId,
153
- text
154
- } = (0, _utils.requireArgs)(['elementId', 'text'], opts);
155
- return await this.uiautomator2.jwproxy.command(`/element/${elementId}/value`, 'POST', {
156
- text,
157
- replace: true
158
- });
159
- };
160
- Object.assign(extensions, commands, helpers);
161
- var _default = exports.default = extensions;
162
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfc3VwcG9ydCIsIl9kcml2ZXIiLCJfdXRpbHMiLCJjb21tYW5kcyIsImV4cG9ydHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsInRvQm9vbCIsInMiLCJfIiwiaXNTdHJpbmciLCJ0b0xvd2VyQ2FzZSIsImFjdGl2ZSIsInVpYXV0b21hdG9yMiIsImp3cHJveHkiLCJjb21tYW5kIiwiZ2V0QXR0cmlidXRlIiwiYXR0cmlidXRlIiwiZWxlbWVudElkIiwiZWxlbWVudERpc3BsYXllZCIsImVsZW1lbnRFbmFibGVkIiwiZWxlbWVudFNlbGVjdGVkIiwiZ2V0TmFtZSIsImdldExvY2F0aW9uIiwiZ2V0U2l6ZSIsInRvdWNoTG9uZ0NsaWNrIiwiZWxlbWVudCIsIngiLCJ5IiwiZHVyYXRpb24iLCJwYXJhbXMiLCJ0b3VjaERvd24iLCJ0b3VjaFVwIiwidG91Y2hNb3ZlIiwiZG9TZXRFbGVtZW50VmFsdWUiLCJzZXRWYWx1ZUltbWVkaWF0ZSIsImtleXMiLCJ0ZXh0IiwiaXNBcnJheSIsImpvaW4iLCJyZXBsYWNlIiwiZ2V0VGV4dCIsImNsaWNrIiwiZ2V0RWxlbWVudFNjcmVlbnNob3QiLCJ0YXAiLCJjb3VudCIsImFyZUNvb3JkaW5hdGVzRGVmaW5lZCIsInV0aWwiLCJoYXNWYWx1ZSIsIkVycm9yIiwiaSIsIlczQ19FTEVNRU5UX0tFWSIsImNsZWFyIiwiZ2V0RWxlbWVudFJlY3QiLCJpc1dlYkNvbnRleHQiLCJsb2ciLCJkZWJ1ZyIsImNocm9tZWRyaXZlciIsImRvd25zdHJlYW1Qcm90b2NvbCIsIlBST1RPQ09MUyIsIk1KU09OV1AiLCJ3aWR0aCIsImhlaWdodCIsIm1vYmlsZVJlcGxhY2VFbGVtZW50VmFsdWUiLCJvcHRzIiwicmVxdWlyZUFyZ3MiLCJPYmplY3QiLCJhc3NpZ24iLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvZWxlbWVudC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IFBST1RPQ09MUywgVzNDX0VMRU1FTlRfS0VZIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5pbXBvcnQgeyByZXF1aXJlQXJncyB9IGZyb20gJy4uL3V0aWxzJztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiB0b0Jvb2wgKHMpIHtcbiAgcmV0dXJuIF8uaXNTdHJpbmcocykgPyAocy50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpIDogISFzO1xufVxuXG5jb21tYW5kcy5hY3RpdmUgPSBhc3luYyBmdW5jdGlvbiBhY3RpdmUgKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKCcvZWxlbWVudC9hY3RpdmUnLCAnR0VUJyk7XG59O1xuXG5jb21tYW5kcy5nZXRBdHRyaWJ1dGUgPSBhc3luYyBmdW5jdGlvbiAoYXR0cmlidXRlLCBlbGVtZW50SWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtlbGVtZW50SWR9L2F0dHJpYnV0ZS8ke2F0dHJpYnV0ZX1gLCAnR0VUJywge30pO1xufTtcblxuY29tbWFuZHMuZWxlbWVudERpc3BsYXllZCA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50SWQpIHtcbiAgcmV0dXJuIHRvQm9vbChhd2FpdCB0aGlzLmdldEF0dHJpYnV0ZSgnZGlzcGxheWVkJywgZWxlbWVudElkKSk7XG59O1xuXG5jb21tYW5kcy5lbGVtZW50RW5hYmxlZCA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50SWQpIHtcbiAgcmV0dXJuIHRvQm9vbChhd2FpdCB0aGlzLmdldEF0dHJpYnV0ZSgnZW5hYmxlZCcsIGVsZW1lbnRJZCkpO1xufTtcblxuY29tbWFuZHMuZWxlbWVudFNlbGVjdGVkID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnRJZCkge1xuICByZXR1cm4gdG9Cb29sKGF3YWl0IHRoaXMuZ2V0QXR0cmlidXRlKCdzZWxlY3RlZCcsIGVsZW1lbnRJZCkpO1xufTtcblxuY29tbWFuZHMuZ2V0TmFtZSA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50SWQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtlbGVtZW50SWR9L25hbWVgLCAnR0VUJywge30pO1xufTtcblxuY29tbWFuZHMuZ2V0TG9jYXRpb24gPSBhc3luYyBmdW5jdGlvbiAoZWxlbWVudElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC9lbGVtZW50LyR7ZWxlbWVudElkfS9sb2NhdGlvbmAsICdHRVQnLCB7fSk7XG59O1xuXG5jb21tYW5kcy5nZXRTaXplID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vc2l6ZWAsICdHRVQnLCB7fSk7XG59O1xuXG5jb21tYW5kcy50b3VjaExvbmdDbGljayA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50LCB4LCB5LCBkdXJhdGlvbikge1xuICBsZXQgcGFyYW1zID0ge2VsZW1lbnQsIHgsIHksIGR1cmF0aW9ufTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL3RvdWNoL2xvbmdjbGlja2AsICdQT1NUJywge3BhcmFtc30pO1xufTtcblxuY29tbWFuZHMudG91Y2hEb3duID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnQsIHgsIHkpIHtcbiAgbGV0IHBhcmFtcyA9IHtlbGVtZW50LCB4LCB5fTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL3RvdWNoL2Rvd25gLCAnUE9TVCcsIHtwYXJhbXN9KTtcbn07XG5cbmNvbW1hbmRzLnRvdWNoVXAgPSBhc3luYyBmdW5jdGlvbiAoZWxlbWVudCwgeCwgeSkge1xuICBsZXQgcGFyYW1zID0ge2VsZW1lbnQsIHgsIHl9O1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvdG91Y2gvdXBgLCAnUE9TVCcsIHtwYXJhbXN9KTtcbn07XG5cbmNvbW1hbmRzLnRvdWNoTW92ZSA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50LCB4LCB5KSB7XG4gIGxldCBwYXJhbXMgPSB7ZWxlbWVudCwgeCwgeX07XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC90b3VjaC9tb3ZlYCwgJ1BPU1QnLCB7cGFyYW1zfSk7XG59O1xuXG5oZWxwZXJzLmRvU2V0RWxlbWVudFZhbHVlID0gYXN5bmMgZnVuY3Rpb24gKHBhcmFtcykge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke3BhcmFtcy5lbGVtZW50SWR9L3ZhbHVlYCwgJ1BPU1QnLCBwYXJhbXMpO1xufTtcblxuY29tbWFuZHMuc2V0VmFsdWVJbW1lZGlhdGUgPSBhc3luYyBmdW5jdGlvbiAoa2V5cywgZWxlbWVudElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC9lbGVtZW50LyR7ZWxlbWVudElkfS92YWx1ZWAsICdQT1NUJywge1xuICAgIGVsZW1lbnRJZCxcbiAgICB0ZXh0OiBfLmlzQXJyYXkoa2V5cykgPyBrZXlzLmpvaW4oJycpIDoga2V5cyxcbiAgICByZXBsYWNlOiBmYWxzZVxuICB9KTtcbn07XG5cbmNvbW1hbmRzLmdldFRleHQgPSBhc3luYyBmdW5jdGlvbiAoZWxlbWVudElkKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC9lbGVtZW50LyR7ZWxlbWVudElkfS90ZXh0YCwgJ0dFVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLmNsaWNrID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtlbGVtZW50fS9jbGlja2AsICdQT1NUJywge2VsZW1lbnR9KTtcbn07XG5cbmNvbW1hbmRzLmdldEVsZW1lbnRTY3JlZW5zaG90ID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtlbGVtZW50fS9zY3JlZW5zaG90YCwgJ0dFVCcsIHt9KTtcbn07XG5cbmNvbW1hbmRzLnRhcCA9IGFzeW5jIGZ1bmN0aW9uIChlbGVtZW50SWQgPSBudWxsLCB4ID0gbnVsbCwgeSA9IG51bGwsIGNvdW50ID0gMSkge1xuICBjb25zdCBhcmVDb29yZGluYXRlc0RlZmluZWQgPSB1dGlsLmhhc1ZhbHVlKHgpICYmIHV0aWwuaGFzVmFsdWUoeSk7XG4gIGlmICghdXRpbC5oYXNWYWx1ZShlbGVtZW50SWQpICYmICFhcmVDb29yZGluYXRlc0RlZmluZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEVpdGhlciBlbGVtZW50IGlkIHRvIHRhcCBvciBib3RoIGFic29sdXRlIGNvb3JkaW5hdGVzIHNob3VsZCBiZSBkZWZpbmVkYCk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICBpZiAodXRpbC5oYXNWYWx1ZShlbGVtZW50SWQpICYmICFhcmVDb29yZGluYXRlc0RlZmluZWQpIHtcbiAgICAgIC8vIHdlIGFyZSBlaXRoZXIgdGFwcGluZyBvbiB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgZWxlbWVudFxuICAgICAgLy8gb3IgYW4gb2Zmc2V0IGZyb20gdGhlIHRvcCBsZWZ0IGNvcm5lclxuICAgICAgYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vY2xpY2tgLCAnUE9TVCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vdGFwYCwgJ1BPU1QnLCB7XG4gICAgICAgIHgsIHksXG4gICAgICAgIFtXM0NfRUxFTUVOVF9LRVldOiBlbGVtZW50SWQsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn07XG5cbmNvbW1hbmRzLmNsZWFyID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnRJZCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vY2xlYXJgLCAnUE9TVCcsIHtlbGVtZW50SWR9KTtcbn07XG5cbmNvbW1hbmRzLmdldEVsZW1lbnRSZWN0ID0gYXN5bmMgZnVuY3Rpb24gKGVsZW1lbnRJZCkge1xuICBpZiAodGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRoaXMubG9nLmRlYnVnKGBEZXRlY3RlZCBkb3duc3RyZWFtIGNocm9tZWRyaXZlciBwcm90b2NvbDogJHt0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmRvd25zdHJlYW1Qcm90b2NvbH1gKTtcbiAgICBpZiAodGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5kb3duc3RyZWFtUHJvdG9jb2wgPT09IFBST1RPQ09MUy5NSlNPTldQKSB7XG4gICAgICBjb25zdCB7eCwgeX0gPSBhd2FpdCB0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmNvbW1hbmQoYC9lbGVtZW50LyR7ZWxlbWVudElkfS9sb2NhdGlvbmAsICdHRVQnKTtcbiAgICAgIGNvbnN0IHt3aWR0aCwgaGVpZ2h0fSA9IGF3YWl0IHRoaXMuY2hyb21lZHJpdmVyLmp3cHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHtlbGVtZW50SWR9L3NpemVgLCAnR0VUJyk7XG4gICAgICByZXR1cm4ge3gsIHksIHdpZHRoLCBoZWlnaHR9O1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vcmVjdGAsICdHRVQnKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vcmVjdGAsICdHRVQnKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gUmVwbGFjZVZhbHVlT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGVsZW1lbnRJZCBUaGUgaWQgb2YgdGhlIGVsZW1lbnQgd2hvc2UgY29udGVudCB3aWxsIGJlIHJlcGxhY2VkXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGV4dCBUaGUgYWN0dWFsIHRleHQgdG8gc2V0XG4gKi9cblxuLyoqXG4gKiBTZW5kcyB0ZXh0IHRvIHRoZSBnaXZlbiBlbGVtZW50IGJ5IHJlcGxhY2luZyBpdHMgcHJldmlvdXMgY29udGVudFxuICpcbiAqIEBwYXJhbSB7UmVwbGFjZVZhbHVlT3B0aW9uc30gb3B0c1xuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhIGZhdWxyZSB3aGlsZSBzZXR0aW5nIHRoZSB0ZXh0XG4gKi9cbmNvbW1hbmRzLm1vYmlsZVJlcGxhY2VFbGVtZW50VmFsdWUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVSZXBsYWNlRWxlbWVudFZhbHVlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge2VsZW1lbnRJZCwgdGV4dH0gPSByZXF1aXJlQXJncyhbJ2VsZW1lbnRJZCcsICd0ZXh0J10sIG9wdHMpO1xuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke2VsZW1lbnRJZH0vdmFsdWVgLCAnUE9TVCcsIHt0ZXh0LCByZXBsYWNlOiB0cnVlfSk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFFBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUVBLElBQUlJLFFBQVEsR0FBQUMsT0FBQSxDQUFBRCxRQUFBLEdBQUcsQ0FBQyxDQUFDO0VBQUVFLE9BQU8sR0FBQUQsT0FBQSxDQUFBQyxPQUFBLEdBQUcsQ0FBQyxDQUFDO0VBQUVDLFVBQVUsR0FBRyxDQUFDLENBQUM7QUFFaEQsU0FBU0MsTUFBTUEsQ0FBRUMsQ0FBQyxFQUFFO0VBQ2xCLE9BQU9DLGVBQUMsQ0FBQ0MsUUFBUSxDQUFDRixDQUFDLENBQUMsR0FBSUEsQ0FBQyxDQUFDRyxXQUFXLENBQUMsQ0FBQyxLQUFLLE1BQU0sR0FBSSxDQUFDLENBQUNILENBQUM7QUFDM0Q7QUFFQUwsUUFBUSxDQUFDUyxNQUFNLEdBQUcsZUFBZUEsTUFBTUEsQ0FBQSxFQUFJO0VBQ3pDLE9BQU8sTUFBTSxJQUFJLENBQUNDLFlBQVksQ0FBQ0MsT0FBTyxDQUFDQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDO0FBQzFFLENBQUM7QUFFRFosUUFBUSxDQUFDYSxZQUFZLEdBQUcsZ0JBQWdCQyxTQUFTLEVBQUVDLFNBQVMsRUFBRTtFQUM1RCxPQUFPLE1BQU0sSUFBSSxDQUFDTCxZQUFZLENBQUNDLE9BQU8sQ0FBQ0MsT0FBTyxDQUFFLFlBQVdHLFNBQVUsY0FBYUQsU0FBVSxFQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNHLENBQUM7QUFF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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","exports","helpers","extensions","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":"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"}
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,30 +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 = exports.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"]
11
11
  const MAGIC_FIRST_VIS_CHILD_SEL = /\/\*\[@firstVisible ?= ?('|")true\1\]/;
12
12
  const MAGIC_SCROLLABLE_SEL = /\/\/\*\[@scrollable ?= ?('|")true\1\]/;
13
13
  const MAGIC_SCROLLABLE_BY = 'new UiSelector().scrollable(true)';
14
- helpers.doFindElementOrEls = async function (params) {
15
- if (params.strategy === 'xpath' && MAGIC_FIRST_VIS_CHILD_SEL.test(params.selector)) {
16
- let elementId = params.context;
17
- return await this.uiautomator2.jwproxy.command(`/appium/element/${elementId}/first_visible`, 'GET', {});
18
- }
19
- if (params.strategy === 'xpath' && MAGIC_SCROLLABLE_SEL.test(params.selector)) {
20
- params.strategy = '-android uiautomator';
21
- params.selector = MAGIC_SCROLLABLE_BY;
22
- }
23
- if (params.strategy === 'css selector') {
24
- params.strategy = '-android uiautomator';
25
- params.selector = new _cssConverter.default(params.selector, this.opts.appPackage).toUiAutomatorSelector();
26
- }
27
- 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
+ },
28
39
  };
29
- var _default = exports.default = helpers;
30
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY3NzQ29udmVydGVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJoZWxwZXJzIiwiZXhwb3J0cyIsIk1BR0lDX0ZJUlNUX1ZJU19DSElMRF9TRUwiLCJNQUdJQ19TQ1JPTExBQkxFX1NFTCIsIk1BR0lDX1NDUk9MTEFCTEVfQlkiLCJkb0ZpbmRFbGVtZW50T3JFbHMiLCJwYXJhbXMiLCJzdHJhdGVneSIsInRlc3QiLCJzZWxlY3RvciIsImVsZW1lbnRJZCIsImNvbnRleHQiLCJ1aWF1dG9tYXRvcjIiLCJqd3Byb3h5IiwiY29tbWFuZCIsIkNzc0NvbnZlcnRlciIsIm9wdHMiLCJhcHBQYWNrYWdlIiwidG9VaUF1dG9tYXRvclNlbGVjdG9yIiwibXVsdGlwbGUiLCJfZGVmYXVsdCIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvY29tbWFuZHMvZmluZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ3NzQ29udmVydGVyIGZyb20gJy4uL2Nzcy1jb252ZXJ0ZXInO1xuXG5jb25zdCBoZWxwZXJzID0ge307XG5cbi8vIHdlIG92ZXJyaWRlIHRoZSB4cGF0aCBzZWFyY2ggZm9yIHRoaXMgZmlyc3QtdmlzaWJsZS1jaGlsZCBzZWxlY3Rvciwgd2hpY2hcbi8vIGxvb2tzIGxpa2UgLypbQGZpcnN0VmlzaWJsZT1cInRydWVcIl1cbmNvbnN0IE1BR0lDX0ZJUlNUX1ZJU19DSElMRF9TRUwgPSAvXFwvXFwqXFxbQGZpcnN0VmlzaWJsZSA/PSA/KCd8XCIpdHJ1ZVxcMVxcXS87XG5cbmNvbnN0IE1BR0lDX1NDUk9MTEFCTEVfU0VMID0gL1xcL1xcL1xcKlxcW0BzY3JvbGxhYmxlID89ID8oJ3xcIil0cnVlXFwxXFxdLztcbmNvbnN0IE1BR0lDX1NDUk9MTEFCTEVfQlkgPSAnbmV3IFVpU2VsZWN0b3IoKS5zY3JvbGxhYmxlKHRydWUpJztcblxuLyoqXG4gKiBPdmVycmlkaW5nIGhlbHBlcnMuZG9GaW5kRWxlbWVudE9yRWxzIGZ1bmN0aW9uYWxpdHkgb2YgYXBwaXVtLWFuZHJvaWQtZHJpdmVyLFxuICogdGhpcy5lbGVtZW50IGluaXRpYWxpemVkIGluIGZpbmQuanMgb2YgYXBwaXVtLWFuZHJvaWQtZHJpdmUuXG4gKi9cbmhlbHBlcnMuZG9GaW5kRWxlbWVudE9yRWxzID0gYXN5bmMgZnVuY3Rpb24gKHBhcmFtcykge1xuICBpZiAocGFyYW1zLnN0cmF0ZWd5ID09PSAneHBhdGgnICYmIE1BR0lDX0ZJUlNUX1ZJU19DSElMRF9TRUwudGVzdChwYXJhbXMuc2VsZWN0b3IpKSB7XG4gICAgbGV0IGVsZW1lbnRJZCA9IHBhcmFtcy5jb250ZXh0O1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5qd3Byb3h5LmNvbW1hbmQoYC9hcHBpdW0vZWxlbWVudC8ke2VsZW1lbnRJZH0vZmlyc3RfdmlzaWJsZWAsICdHRVQnLCB7fSk7XG4gIH1cbiAgaWYgKHBhcmFtcy5zdHJhdGVneSA9PT0gJ3hwYXRoJyAmJiBNQUdJQ19TQ1JPTExBQkxFX1NFTC50ZXN0KHBhcmFtcy5zZWxlY3RvcikpIHtcbiAgICBwYXJhbXMuc3RyYXRlZ3kgPSAnLWFuZHJvaWQgdWlhdXRvbWF0b3InO1xuICAgIHBhcmFtcy5zZWxlY3RvciA9IE1BR0lDX1NDUk9MTEFCTEVfQlk7XG4gIH1cbiAgaWYgKHBhcmFtcy5zdHJhdGVneSA9PT0gJ2NzcyBzZWxlY3RvcicpIHtcbiAgICBwYXJhbXMuc3RyYXRlZ3kgPSAnLWFuZHJvaWQgdWlhdXRvbWF0b3InO1xuICAgIHBhcmFtcy5zZWxlY3RvciA9IG5ldyBDc3NDb252ZXJ0ZXIocGFyYW1zLnNlbGVjdG9yLCB0aGlzLm9wdHMuYXBwUGFja2FnZSlcbiAgICAgIC50b1VpQXV0b21hdG9yU2VsZWN0b3IoKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuandwcm94eS5jb21tYW5kKGAvZWxlbWVudCR7cGFyYW1zLm11bHRpcGxlID8gJ3MnIDogJyd9YCwgJ1BPU1QnLCBwYXJhbXMpO1xufTtcblxuZXhwb3J0IHsgaGVscGVycyB9O1xuZXhwb3J0IGRlZmF1bHQgaGVscGVycztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxhQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxNQUFNQyxPQUFPLEdBQUFDLE9BQUEsQ0FBQUQsT0FBQSxHQUFHLENBQUMsQ0FBQztBQUlsQixNQUFNRSx5QkFBeUIsR0FBRyx1Q0FBdUM7QUFFekUsTUFBTUMsb0JBQW9CLEdBQUcsdUNBQXVDO0FBQ3BFLE1BQU1DLG1CQUFtQixHQUFHLG1DQUFtQztBQU0vREosT0FBTyxDQUFDSyxrQkFBa0IsR0FBRyxnQkFBZ0JDLE1BQU0sRUFBRTtFQUNuRCxJQUFJQSxNQUFNLENBQUNDLFFBQVEsS0FBSyxPQUFPLElBQUlMLHlCQUF5QixDQUFDTSxJQUFJLENBQUNGLE1BQU0sQ0FBQ0csUUFBUSxDQUFDLEVBQUU7SUFDbEYsSUFBSUMsU0FBUyxHQUFHSixNQUFNLENBQUNLLE9BQU87SUFDOUIsT0FBTyxNQUFNLElBQUksQ0FBQ0MsWUFBWSxDQUFDQyxPQUFPLENBQUNDLE9BQU8sQ0FBRSxtQkFBa0JKLFNBQVUsZ0JBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7RUFDekc7RUFDQSxJQUFJSixNQUFNLENBQUNDLFFBQVEsS0FBSyxPQUFPLElBQUlKLG9CQUFvQixDQUFDSyxJQUFJLENBQUNGLE1BQU0sQ0FBQ0csUUFBUSxDQUFDLEVBQUU7SUFDN0VILE1BQU0sQ0FBQ0MsUUFBUSxHQUFHLHNCQUFzQjtJQUN4Q0QsTUFBTSxDQUFDRyxRQUFRLEdBQUdMLG1CQUFtQjtFQUN2QztFQUNBLElBQUlFLE1BQU0sQ0FBQ0MsUUFBUSxLQUFLLGNBQWMsRUFBRTtJQUN0Q0QsTUFBTSxDQUFDQyxRQUFRLEdBQUcsc0JBQXNCO0lBQ3hDRCxNQUFNLENBQUNHLFFBQVEsR0FBRyxJQUFJTSxxQkFBWSxDQUFDVCxNQUFNLENBQUNHLFFBQVEsRUFBRSxJQUFJLENBQUNPLElBQUksQ0FBQ0MsVUFBVSxDQUFDLENBQ3RFQyxxQkFBcUIsQ0FBQyxDQUFDO0VBQzVCO0VBQ0EsT0FBTyxNQUFNLElBQUksQ0FBQ04sWUFBWSxDQUFDQyxPQUFPLENBQUNDLE9BQU8sQ0FBRSxXQUFVUixNQUFNLENBQUNhLFFBQVEsR0FBRyxHQUFHLEdBQUcsRUFBRyxFQUFDLEVBQUUsTUFBTSxFQUFFYixNQUFNLENBQUM7QUFDekcsQ0FBQztBQUFDLElBQUFjLFFBQUEsR0FBQW5CLE9BQUEsQ0FBQW9CLE9BQUEsR0FHYXJCLE9BQU8ifQ==
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,GAAAC,OAAA,CAAAD,OAAA,GAAG,CAAC,CAAC;AAIlB,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,GAAAnB,OAAA,CAAAoB,OAAA,GAGarB,OAAO"}
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"}