appium-uiautomator2-driver 6.7.4 → 6.7.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/build/lib/commands/element.d.ts +35 -69
- package/build/lib/commands/element.d.ts.map +1 -1
- package/build/lib/commands/element.js +35 -84
- package/build/lib/commands/element.js.map +1 -1
- package/build/lib/commands/gestures.d.ts +24 -189
- package/build/lib/commands/gestures.d.ts.map +1 -1
- package/build/lib/commands/gestures.js +14 -204
- package/build/lib/commands/gestures.js.map +1 -1
- package/build/lib/commands/misc.d.ts +15 -35
- package/build/lib/commands/misc.d.ts.map +1 -1
- package/build/lib/commands/misc.js +11 -30
- package/build/lib/commands/misc.js.map +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/lib/commands/element.ts +151 -0
- package/lib/commands/gestures.ts +234 -0
- package/lib/commands/misc.ts +63 -0
- package/npm-shrinkwrap.json +17 -47
- package/package.json +2 -2
- package/lib/commands/element.js +0 -261
- package/lib/commands/gestures.js +0 -446
- package/lib/commands/misc.js +0 -109
|
@@ -1,212 +1,47 @@
|
|
|
1
|
+
import type { Element as AppiumElement } from '@appium/types';
|
|
2
|
+
import type { AndroidUiautomator2Driver } from '../driver';
|
|
1
3
|
/**
|
|
2
|
-
* Performs a simple click/tap gesture
|
|
3
|
-
*
|
|
4
|
-
* @this {AndroidUiautomator2Driver}
|
|
5
|
-
* @param {string} [elementId] The id of the element to be clicked.
|
|
6
|
-
* If the element is missing then both click offset coordinates must be provided.
|
|
7
|
-
* If both the element id and offset are provided then the coordinates are parsed
|
|
8
|
-
* as relative offsets from the top left corner of the element.
|
|
9
|
-
* @param {number} [x] The x coordinate to click on.
|
|
10
|
-
* @param {number} [y] The y coordinate to click on.
|
|
11
|
-
* @returns {Promise<void>}
|
|
12
|
-
* @throws {Error} if provided options are not valid
|
|
4
|
+
* Performs a simple click/tap gesture.
|
|
13
5
|
*/
|
|
14
|
-
export function mobileClickGesture(this:
|
|
6
|
+
export declare function mobileClickGesture(this: AndroidUiautomator2Driver, elementId?: AppiumElement | string, x?: number, y?: number): Promise<void>;
|
|
15
7
|
/**
|
|
16
|
-
* Performs a click
|
|
17
|
-
*
|
|
18
|
-
* @this {AndroidUiautomator2Driver}
|
|
19
|
-
* @param {string} [elementId] The id of the element to be clicked.
|
|
20
|
-
* If the element is missing then both click offset coordinates must be provided.
|
|
21
|
-
* If both the element id and offset are provided then the coordinates are parsed
|
|
22
|
-
* as relative offsets from the top left corner of the element.
|
|
23
|
-
* @param {number} [x] The x coordinate to click on.
|
|
24
|
-
* @param {number} [y] The y coordinate to click on.
|
|
25
|
-
* @param {number} [duration] Click duration in milliseconds. The value must not be negative.
|
|
26
|
-
* Default is 500.
|
|
27
|
-
* @returns {Promise<void>}
|
|
28
|
-
* @throws {Error} if provided options are not valid
|
|
8
|
+
* Performs a long click with an optional duration.
|
|
29
9
|
*/
|
|
30
|
-
export function mobileLongClickGesture(this:
|
|
10
|
+
export declare function mobileLongClickGesture(this: AndroidUiautomator2Driver, elementId?: AppiumElement | string, x?: number, y?: number, duration?: number): Promise<void>;
|
|
31
11
|
/**
|
|
32
|
-
* Performs a click
|
|
33
|
-
* @this {AndroidUiautomator2Driver}
|
|
34
|
-
* @param {string} [elementId] The id of the element to be clicked.
|
|
35
|
-
* If the element is missing then both click offset coordinates must be provided.
|
|
36
|
-
* If both the element id and offset are provided then the coordinates are parsed
|
|
37
|
-
* as relative offsets from the top left corner of the element.
|
|
38
|
-
* @param {number} [x] The x coordinate to click on.
|
|
39
|
-
* @param {number} [y] The y coordinate to click on.
|
|
40
|
-
* @returns {Promise<void>}
|
|
41
|
-
* @throws {Error} if provided options are not valid
|
|
12
|
+
* Performs a double-click gesture.
|
|
42
13
|
*/
|
|
43
|
-
export function mobileDoubleClickGesture(this:
|
|
14
|
+
export declare function mobileDoubleClickGesture(this: AndroidUiautomator2Driver, elementId?: AppiumElement | string, x?: number, y?: number): Promise<void>;
|
|
44
15
|
/**
|
|
45
|
-
* Drags
|
|
46
|
-
* @this {AndroidUiautomator2Driver}
|
|
47
|
-
* @param {string} [elementId] The id of the element to be dragged.
|
|
48
|
-
* If the element id is missing then the start coordinates must be provided.
|
|
49
|
-
* If both the element id and the start coordinates are provided then these
|
|
50
|
-
* coordinates are considered as offsets from the top left element corner.
|
|
51
|
-
* @param {number} [startX] The x coordinate where the dragging starts
|
|
52
|
-
* @param {number} [startY] The y coordinate where the dragging starts
|
|
53
|
-
* @param {number} [endX] The x coordinate where the dragging ends
|
|
54
|
-
* @param {number} [endY] The y coordinate where the dragging ends
|
|
55
|
-
* @param {number} [speed] The speed at which to perform this gesture in pixels per second.
|
|
56
|
-
* The value must not be negative.
|
|
57
|
-
* Default is 2500 * displayDensity.
|
|
58
|
-
* @returns {Promise<void>}
|
|
59
|
-
* @throws {Error} if provided options are not valid
|
|
16
|
+
* Drags from a start point to an end point.
|
|
60
17
|
*/
|
|
61
|
-
export function mobileDragGesture(this:
|
|
18
|
+
export declare function mobileDragGesture(this: AndroidUiautomator2Driver, elementId?: AppiumElement | string, startX?: number, startY?: number, endX?: number, endY?: number, speed?: number): Promise<void>;
|
|
62
19
|
/**
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
* @throws {Error} if provided options are not valid
|
|
66
|
-
* @this {AndroidUiautomator2Driver}
|
|
67
|
-
* @param {string} direction Direction of the fling.
|
|
68
|
-
* Acceptable values are: `up`, `down`, `left` and `right` (case insensitive).
|
|
69
|
-
* @param {string} [elementId] The id of the element to be flinged.
|
|
70
|
-
* If the element id is missing then fling bounding area must be provided.
|
|
71
|
-
* If both the element id and the fling bounding area are provided then this
|
|
72
|
-
* area is effectively ignored.
|
|
73
|
-
* @param {number} [left] The left coordinate of the fling bounding area.
|
|
74
|
-
* @param {number} [top] The top coordinate of the fling bounding area.
|
|
75
|
-
* @param {number} [width] The width of the fling bounding area.
|
|
76
|
-
* @param {number} [height] The height of the fling bounding area.
|
|
77
|
-
* @param {number} [speed] The speed at which to perform this gesture in pixels per second.
|
|
78
|
-
* The value must be greater than the minimum fling velocity for the given view (50 by default).
|
|
79
|
-
* Default is 7500 * displayDensity.
|
|
80
|
-
* @returns {Promise<boolean>} True if the object can still scroll in the given direction.
|
|
20
|
+
* Performs a fling gesture and reports if further scrolling is possible.
|
|
81
21
|
*/
|
|
82
|
-
export function mobileFlingGesture(this:
|
|
22
|
+
export declare function mobileFlingGesture(this: AndroidUiautomator2Driver, direction: string, elementId?: AppiumElement | string, left?: number, top?: number, width?: number, height?: number, speed?: number): Promise<boolean>;
|
|
83
23
|
/**
|
|
84
|
-
* Performs a pinch
|
|
85
|
-
* @this {AndroidUiautomator2Driver}
|
|
86
|
-
* @param {number} percent The size of the pinch as a percentage of the pinch area size.
|
|
87
|
-
* Valid values must be float numbers in range 0..1, where 1.0 is 100%
|
|
88
|
-
* @param {string} [elementId] The id of the element to be pinched.
|
|
89
|
-
* If the element id is missing then pinch bounding area must be provided.
|
|
90
|
-
* If both the element id and the pinch bounding area are provided then the
|
|
91
|
-
* area is effectively ignored.
|
|
92
|
-
* @param {number} [left] The left coordinate of the pinch bounding area.
|
|
93
|
-
* @param {number} [top] The top coordinate of the pinch bounding area.
|
|
94
|
-
* @param {number} [width] The width of the pinch bounding area.
|
|
95
|
-
* @param {number} [height] The height of the pinch bounding area.
|
|
96
|
-
* @param {number} [speed] The speed at which to perform this gesture in pixels per second.
|
|
97
|
-
* The value must not be negative.
|
|
98
|
-
* Default is 2500 * displayDensity.
|
|
99
|
-
* @returns {Promise<void>}
|
|
100
|
-
* @throws {Error} if provided options are not valid
|
|
24
|
+
* Performs a pinch-close gesture.
|
|
101
25
|
*/
|
|
102
|
-
export function mobilePinchCloseGesture(this:
|
|
26
|
+
export declare function mobilePinchCloseGesture(this: AndroidUiautomator2Driver, percent: number, elementId?: AppiumElement | string, left?: number, top?: number, width?: number, height?: number, speed?: number): Promise<void>;
|
|
103
27
|
/**
|
|
104
|
-
* Performs a pinch
|
|
105
|
-
* @this {AndroidUiautomator2Driver}
|
|
106
|
-
* @param {number} percent The size of the pinch as a percentage of the pinch area size.
|
|
107
|
-
* Valid values must be float numbers in range 0..1, where 1.0 is 100%
|
|
108
|
-
* @param {string} [elementId] The id of the element to be pinched.
|
|
109
|
-
* If the element id is missing then pinch bounding area must be provided.
|
|
110
|
-
* If both the element id and the pinch bounding area are provided then the
|
|
111
|
-
* area is effectively ignored.
|
|
112
|
-
* @param {number} [left] The left coordinate of the pinch bounding area.
|
|
113
|
-
* @param {number} [top] The top coordinate of the pinch bounding area.
|
|
114
|
-
* @param {number} [width] The width of the pinch bounding area.
|
|
115
|
-
* @param {number} [height] The height of the pinch bounding area.
|
|
116
|
-
* @param {number} [speed] The speed at which to perform this gesture in pixels per second.
|
|
117
|
-
* The value must not be negative.
|
|
118
|
-
* Default is 2500 * displayDensity.
|
|
119
|
-
* @returns {Promise<void>}
|
|
120
|
-
* @throws {Error} if provided options are not valid
|
|
28
|
+
* Performs a pinch-open gesture.
|
|
121
29
|
*/
|
|
122
|
-
export function mobilePinchOpenGesture(this:
|
|
30
|
+
export declare function mobilePinchOpenGesture(this: AndroidUiautomator2Driver, percent: number, elementId?: AppiumElement | string, left?: number, top?: number, width?: number, height?: number, speed?: number): Promise<void>;
|
|
123
31
|
/**
|
|
124
|
-
* Performs a swipe gesture.
|
|
125
|
-
* @this {AndroidUiautomator2Driver}
|
|
126
|
-
* @param {string} direction Direction of the swipe.
|
|
127
|
-
* Acceptable values are: `up`, `down`, `left` and `right` (case insensitive).
|
|
128
|
-
* @param {number} percent The size of the swipe as a percentage of the swipe area size.
|
|
129
|
-
* Valid values must be float numbers in range 0..1, where 1.0 is 100%.
|
|
130
|
-
* @param {string} [elementId] The id of the element to be swiped.
|
|
131
|
-
* If the element id is missing then swipe bounding area must be provided.
|
|
132
|
-
* If both the element id and the swipe bounding area are provided then the
|
|
133
|
-
* area is effectively ignored.
|
|
134
|
-
* @param {number} [left] The left coordinate of the swipe bounding area.
|
|
135
|
-
* @param {number} [top] The top coordinate of the swipe bounding area.
|
|
136
|
-
* @param {number} [width] The width of the swipe bounding area.
|
|
137
|
-
* @param {number} [height] The height of the swipe bounding area.
|
|
138
|
-
* @param {number} [speed] The speed at which to perform this gesture in pixels per second.
|
|
139
|
-
* The value must not be negative.
|
|
140
|
-
* Default is 5000 * displayDensity.
|
|
141
|
-
* @returns {Promise<void>}
|
|
142
|
-
* @throws {Error} if provided options are not valid
|
|
32
|
+
* Performs a swipe gesture for the given direction and percent.
|
|
143
33
|
*/
|
|
144
|
-
export function mobileSwipeGesture(this:
|
|
34
|
+
export declare function mobileSwipeGesture(this: AndroidUiautomator2Driver, direction: string, percent: number, elementId?: AppiumElement | string, left?: number, top?: number, width?: number, height?: number, speed?: number): Promise<void>;
|
|
145
35
|
/**
|
|
146
|
-
* Performs a scroll gesture.
|
|
147
|
-
*
|
|
148
|
-
* @throws {Error} if provided options are not valid
|
|
149
|
-
* @this {AndroidUiautomator2Driver}
|
|
150
|
-
* @param {string} direction Direction of the scroll.
|
|
151
|
-
* Acceptable values are: `up`, `down`, `left` and `right` (case insensitive).
|
|
152
|
-
* @param {number} percent The size of the scroll as a percentage of the scrolling area size.
|
|
153
|
-
* Valid values must be float numbers greater than zero, where 1.0 is 100%.
|
|
154
|
-
* @param {string} [elementId] The id of the element to be scrolled.
|
|
155
|
-
* If the element id is missing then scroll bounding area must be provided.
|
|
156
|
-
* If both the element id and the scroll bounding area are provided then this
|
|
157
|
-
* area is effectively ignored.
|
|
158
|
-
* @param {number} [left] The left coordinate of the scroll bounding area.
|
|
159
|
-
* @param {number} [top] The top coordinate of the scroll bounding area.
|
|
160
|
-
* @param {number} [width] The width of the scroll bounding area.
|
|
161
|
-
* @param {number} [height] The height of the scroll bounding area.
|
|
162
|
-
* @param {number} [speed] The speed at which to perform this gesture in pixels per second.
|
|
163
|
-
* The value must not be negative.
|
|
164
|
-
* Default is 5000 * displayDensity.
|
|
165
|
-
* @returns {Promise<boolean>} True if the object can still scroll in the given direction.
|
|
36
|
+
* Performs a scroll gesture and reports if further scrolling is possible.
|
|
166
37
|
*/
|
|
167
|
-
export function mobileScrollGesture(this:
|
|
38
|
+
export declare function mobileScrollGesture(this: AndroidUiautomator2Driver, direction: string, percent: number, elementId?: AppiumElement | string, left?: number, top?: number, width?: number, height?: number, speed?: number): Promise<boolean>;
|
|
168
39
|
/**
|
|
169
|
-
* Scrolls
|
|
170
|
-
* becomes visible. This function returns immediately if the `elementToId`
|
|
171
|
-
* is already visible in the view port. Otherwise it would scroll
|
|
172
|
-
* to the very beginning of the scrollable control and tries to reach the destination element
|
|
173
|
-
* by scrolling its parent to the end step by step. The scroll direction (vertical or horizontal)
|
|
174
|
-
* is detected automatically.
|
|
175
|
-
* @this {AndroidUiautomator2Driver}
|
|
176
|
-
* @param {string} elementId The identifier of the scrollable element, which is going to be scrolled.
|
|
177
|
-
* It is required this element is a valid scrollable container and it was located
|
|
178
|
-
* by `-android uiautomator` strategy.
|
|
179
|
-
* @param {string} elementToId The identifier of the item, which belongs to the scrollable element above,
|
|
180
|
-
* and which should become visible after the scrolling operation is finished.
|
|
181
|
-
* It is required this element was located by `-android uiautomator` strategy.
|
|
182
|
-
* @returns {Promise<void>}
|
|
183
|
-
* @throws {Error} if the scrolling operation cannot be performed
|
|
40
|
+
* Scrolls a scrollable element until a target element becomes visible.
|
|
184
41
|
*/
|
|
185
|
-
export function mobileScrollBackTo(this:
|
|
42
|
+
export declare function mobileScrollBackTo(this: AndroidUiautomator2Driver, elementId?: string, elementToId?: string): Promise<void>;
|
|
186
43
|
/**
|
|
187
|
-
* Scrolls
|
|
188
|
-
* by `strategy` and `selector` becomes visible. This function returns immediately if the
|
|
189
|
-
* destination element is already visible in the view port. Otherwise it would scroll
|
|
190
|
-
* to the very beginning of the scrollable control and tries to reach the destination element
|
|
191
|
-
* by scrolling its parent to the end step by step. The scroll direction (vertical or horizontal)
|
|
192
|
-
* is detected automatically.
|
|
193
|
-
*
|
|
194
|
-
* @this {AndroidUiautomator2Driver}
|
|
195
|
-
* @param {string} strategy The following strategies are supported:
|
|
196
|
-
* - `accessibility id` (UiSelector().description)
|
|
197
|
-
* - `class name` (UiSelector().className)
|
|
198
|
-
* - `-android uiautomator` (UiSelector)
|
|
199
|
-
* @param {string} selector The corresponding lookup value for the given strategy.
|
|
200
|
-
* @param {string} [elementId] The identifier of an element. It is required this element is a valid scrollable container
|
|
201
|
-
* and it was located by `-android uiautomator` strategy.
|
|
202
|
-
* If this property is not provided then the first currently available scrollable view
|
|
203
|
-
* is selected for the interaction.
|
|
204
|
-
* @param {number} [maxSwipes] The maximum number of swipes to perform on the target scrollable view in order to reach
|
|
205
|
-
* the destination element. In case this value is unset then it would be retrieved from the
|
|
206
|
-
* scrollable element itself (via `getMaxSearchSwipes()` property).
|
|
207
|
-
* @returns {Promise<void>}
|
|
208
|
-
* @throws {Error} if the scrolling operation cannot be performed
|
|
44
|
+
* Scrolls until an element located by the given strategy is visible.
|
|
209
45
|
*/
|
|
210
|
-
export function mobileScroll(this:
|
|
211
|
-
export type AndroidUiautomator2Driver = import("../driver").AndroidUiautomator2Driver;
|
|
46
|
+
export declare function mobileScroll(this: AndroidUiautomator2Driver, strategy: string, selector: string, elementId?: AppiumElement | string, maxSwipes?: number): Promise<void>;
|
|
212
47
|
//# sourceMappingURL=gestures.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gestures.d.ts","sourceRoot":"","sources":["../../../lib/commands/gestures.
|
|
1
|
+
{"version":3,"file":"gestures.d.ts","sourceRoot":"","sources":["../../../lib/commands/gestures.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAC,OAAO,IAAI,aAAa,EAAW,MAAM,eAAe,CAAC;AAEtE,OAAO,KAAK,EAAC,yBAAyB,EAAC,MAAM,WAAW,CAAC;AAEzD;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,yBAAyB,EAC/B,SAAS,CAAC,EAAE,aAAa,GAAG,MAAM,EAClC,CAAC,CAAC,EAAE,MAAM,EACV,CAAC,CAAC,EAAE,MAAM,GACT,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,yBAAyB,EAC/B,SAAS,CAAC,EAAE,aAAa,GAAG,MAAM,EAClC,CAAC,CAAC,EAAE,MAAM,EACV,CAAC,CAAC,EAAE,MAAM,EACV,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,yBAAyB,EAC/B,SAAS,CAAC,EAAE,aAAa,GAAG,MAAM,EAClC,CAAC,CAAC,EAAE,MAAM,EACV,CAAC,CAAC,EAAE,MAAM,GACT,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,yBAAyB,EAC/B,SAAS,CAAC,EAAE,aAAa,GAAG,MAAM,EAClC,MAAM,CAAC,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,MAAM,EACb,IAAI,CAAC,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,yBAAyB,EAC/B,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,aAAa,GAAG,MAAM,EAClC,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAOlB;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,yBAAyB,EAC/B,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,aAAa,GAAG,MAAM,EAClC,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,yBAAyB,EAC/B,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,aAAa,GAAG,MAAM,EAClC,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,yBAAyB,EAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,aAAa,GAAG,MAAM,EAClC,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,yBAAyB,EAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,aAAa,GAAG,MAAM,EAClC,IAAI,CAAC,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAQlB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,yBAAyB,EAC/B,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,yBAAyB,EAC/B,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,aAAa,GAAG,MAAM,EAClC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAQf"}
|
|
@@ -14,21 +14,11 @@ exports.mobileSwipeGesture = mobileSwipeGesture;
|
|
|
14
14
|
exports.mobileScrollGesture = mobileScrollGesture;
|
|
15
15
|
exports.mobileScrollBackTo = mobileScrollBackTo;
|
|
16
16
|
exports.mobileScroll = mobileScroll;
|
|
17
|
+
const driver_1 = require("appium/driver");
|
|
17
18
|
const support_1 = require("appium/support");
|
|
18
19
|
const lodash_1 = __importDefault(require("lodash"));
|
|
19
|
-
const driver_1 = require("appium/driver");
|
|
20
20
|
/**
|
|
21
|
-
* Performs a simple click/tap gesture
|
|
22
|
-
*
|
|
23
|
-
* @this {AndroidUiautomator2Driver}
|
|
24
|
-
* @param {string} [elementId] The id of the element to be clicked.
|
|
25
|
-
* If the element is missing then both click offset coordinates must be provided.
|
|
26
|
-
* If both the element id and offset are provided then the coordinates are parsed
|
|
27
|
-
* as relative offsets from the top left corner of the element.
|
|
28
|
-
* @param {number} [x] The x coordinate to click on.
|
|
29
|
-
* @param {number} [y] The y coordinate to click on.
|
|
30
|
-
* @returns {Promise<void>}
|
|
31
|
-
* @throws {Error} if provided options are not valid
|
|
21
|
+
* Performs a simple click/tap gesture.
|
|
32
22
|
*/
|
|
33
23
|
async function mobileClickGesture(elementId, x, y) {
|
|
34
24
|
await this.uiautomator2.jwproxy.command('/appium/gestures/click', 'POST', {
|
|
@@ -37,19 +27,7 @@ async function mobileClickGesture(elementId, x, y) {
|
|
|
37
27
|
});
|
|
38
28
|
}
|
|
39
29
|
/**
|
|
40
|
-
* Performs a click
|
|
41
|
-
*
|
|
42
|
-
* @this {AndroidUiautomator2Driver}
|
|
43
|
-
* @param {string} [elementId] The id of the element to be clicked.
|
|
44
|
-
* If the element is missing then both click offset coordinates must be provided.
|
|
45
|
-
* If both the element id and offset are provided then the coordinates are parsed
|
|
46
|
-
* as relative offsets from the top left corner of the element.
|
|
47
|
-
* @param {number} [x] The x coordinate to click on.
|
|
48
|
-
* @param {number} [y] The y coordinate to click on.
|
|
49
|
-
* @param {number} [duration] Click duration in milliseconds. The value must not be negative.
|
|
50
|
-
* Default is 500.
|
|
51
|
-
* @returns {Promise<void>}
|
|
52
|
-
* @throws {Error} if provided options are not valid
|
|
30
|
+
* Performs a long click with an optional duration.
|
|
53
31
|
*/
|
|
54
32
|
async function mobileLongClickGesture(elementId, x, y, duration) {
|
|
55
33
|
await this.uiautomator2.jwproxy.command('/appium/gestures/long_click', 'POST', {
|
|
@@ -59,16 +37,7 @@ async function mobileLongClickGesture(elementId, x, y, duration) {
|
|
|
59
37
|
});
|
|
60
38
|
}
|
|
61
39
|
/**
|
|
62
|
-
* Performs a click
|
|
63
|
-
* @this {AndroidUiautomator2Driver}
|
|
64
|
-
* @param {string} [elementId] The id of the element to be clicked.
|
|
65
|
-
* If the element is missing then both click offset coordinates must be provided.
|
|
66
|
-
* If both the element id and offset are provided then the coordinates are parsed
|
|
67
|
-
* as relative offsets from the top left corner of the element.
|
|
68
|
-
* @param {number} [x] The x coordinate to click on.
|
|
69
|
-
* @param {number} [y] The y coordinate to click on.
|
|
70
|
-
* @returns {Promise<void>}
|
|
71
|
-
* @throws {Error} if provided options are not valid
|
|
40
|
+
* Performs a double-click gesture.
|
|
72
41
|
*/
|
|
73
42
|
async function mobileDoubleClickGesture(elementId, x, y) {
|
|
74
43
|
await this.uiautomator2.jwproxy.command('/appium/gestures/double_click', 'POST', {
|
|
@@ -77,21 +46,7 @@ async function mobileDoubleClickGesture(elementId, x, y) {
|
|
|
77
46
|
});
|
|
78
47
|
}
|
|
79
48
|
/**
|
|
80
|
-
* Drags
|
|
81
|
-
* @this {AndroidUiautomator2Driver}
|
|
82
|
-
* @param {string} [elementId] The id of the element to be dragged.
|
|
83
|
-
* If the element id is missing then the start coordinates must be provided.
|
|
84
|
-
* If both the element id and the start coordinates are provided then these
|
|
85
|
-
* coordinates are considered as offsets from the top left element corner.
|
|
86
|
-
* @param {number} [startX] The x coordinate where the dragging starts
|
|
87
|
-
* @param {number} [startY] The y coordinate where the dragging starts
|
|
88
|
-
* @param {number} [endX] The x coordinate where the dragging ends
|
|
89
|
-
* @param {number} [endY] The y coordinate where the dragging ends
|
|
90
|
-
* @param {number} [speed] The speed at which to perform this gesture in pixels per second.
|
|
91
|
-
* The value must not be negative.
|
|
92
|
-
* Default is 2500 * displayDensity.
|
|
93
|
-
* @returns {Promise<void>}
|
|
94
|
-
* @throws {Error} if provided options are not valid
|
|
49
|
+
* Drags from a start point to an end point.
|
|
95
50
|
*/
|
|
96
51
|
async function mobileDragGesture(elementId, startX, startY, endX, endY, speed) {
|
|
97
52
|
await this.uiautomator2.jwproxy.command('/appium/gestures/drag', 'POST', {
|
|
@@ -102,27 +57,10 @@ async function mobileDragGesture(elementId, startX, startY, endX, endY, speed) {
|
|
|
102
57
|
});
|
|
103
58
|
}
|
|
104
59
|
/**
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
* @throws {Error} if provided options are not valid
|
|
108
|
-
* @this {AndroidUiautomator2Driver}
|
|
109
|
-
* @param {string} direction Direction of the fling.
|
|
110
|
-
* Acceptable values are: `up`, `down`, `left` and `right` (case insensitive).
|
|
111
|
-
* @param {string} [elementId] The id of the element to be flinged.
|
|
112
|
-
* If the element id is missing then fling bounding area must be provided.
|
|
113
|
-
* If both the element id and the fling bounding area are provided then this
|
|
114
|
-
* area is effectively ignored.
|
|
115
|
-
* @param {number} [left] The left coordinate of the fling bounding area.
|
|
116
|
-
* @param {number} [top] The top coordinate of the fling bounding area.
|
|
117
|
-
* @param {number} [width] The width of the fling bounding area.
|
|
118
|
-
* @param {number} [height] The height of the fling bounding area.
|
|
119
|
-
* @param {number} [speed] The speed at which to perform this gesture in pixels per second.
|
|
120
|
-
* The value must be greater than the minimum fling velocity for the given view (50 by default).
|
|
121
|
-
* Default is 7500 * displayDensity.
|
|
122
|
-
* @returns {Promise<boolean>} True if the object can still scroll in the given direction.
|
|
60
|
+
* Performs a fling gesture and reports if further scrolling is possible.
|
|
123
61
|
*/
|
|
124
62
|
async function mobileFlingGesture(direction, elementId, left, top, width, height, speed) {
|
|
125
|
-
return
|
|
63
|
+
return (await this.uiautomator2.jwproxy.command('/appium/gestures/fling', 'POST', {
|
|
126
64
|
origin: toOrigin(elementId),
|
|
127
65
|
area: toRect(left, top, width, height),
|
|
128
66
|
direction,
|
|
@@ -130,23 +68,7 @@ async function mobileFlingGesture(direction, elementId, left, top, width, height
|
|
|
130
68
|
}));
|
|
131
69
|
}
|
|
132
70
|
/**
|
|
133
|
-
* Performs a pinch
|
|
134
|
-
* @this {AndroidUiautomator2Driver}
|
|
135
|
-
* @param {number} percent The size of the pinch as a percentage of the pinch area size.
|
|
136
|
-
* Valid values must be float numbers in range 0..1, where 1.0 is 100%
|
|
137
|
-
* @param {string} [elementId] The id of the element to be pinched.
|
|
138
|
-
* If the element id is missing then pinch bounding area must be provided.
|
|
139
|
-
* If both the element id and the pinch bounding area are provided then the
|
|
140
|
-
* area is effectively ignored.
|
|
141
|
-
* @param {number} [left] The left coordinate of the pinch bounding area.
|
|
142
|
-
* @param {number} [top] The top coordinate of the pinch bounding area.
|
|
143
|
-
* @param {number} [width] The width of the pinch bounding area.
|
|
144
|
-
* @param {number} [height] The height of the pinch bounding area.
|
|
145
|
-
* @param {number} [speed] The speed at which to perform this gesture in pixels per second.
|
|
146
|
-
* The value must not be negative.
|
|
147
|
-
* Default is 2500 * displayDensity.
|
|
148
|
-
* @returns {Promise<void>}
|
|
149
|
-
* @throws {Error} if provided options are not valid
|
|
71
|
+
* Performs a pinch-close gesture.
|
|
150
72
|
*/
|
|
151
73
|
async function mobilePinchCloseGesture(percent, elementId, left, top, width, height, speed) {
|
|
152
74
|
await this.uiautomator2.jwproxy.command('/appium/gestures/pinch_close', 'POST', {
|
|
@@ -157,23 +79,7 @@ async function mobilePinchCloseGesture(percent, elementId, left, top, width, hei
|
|
|
157
79
|
});
|
|
158
80
|
}
|
|
159
81
|
/**
|
|
160
|
-
* Performs a pinch
|
|
161
|
-
* @this {AndroidUiautomator2Driver}
|
|
162
|
-
* @param {number} percent The size of the pinch as a percentage of the pinch area size.
|
|
163
|
-
* Valid values must be float numbers in range 0..1, where 1.0 is 100%
|
|
164
|
-
* @param {string} [elementId] The id of the element to be pinched.
|
|
165
|
-
* If the element id is missing then pinch bounding area must be provided.
|
|
166
|
-
* If both the element id and the pinch bounding area are provided then the
|
|
167
|
-
* area is effectively ignored.
|
|
168
|
-
* @param {number} [left] The left coordinate of the pinch bounding area.
|
|
169
|
-
* @param {number} [top] The top coordinate of the pinch bounding area.
|
|
170
|
-
* @param {number} [width] The width of the pinch bounding area.
|
|
171
|
-
* @param {number} [height] The height of the pinch bounding area.
|
|
172
|
-
* @param {number} [speed] The speed at which to perform this gesture in pixels per second.
|
|
173
|
-
* The value must not be negative.
|
|
174
|
-
* Default is 2500 * displayDensity.
|
|
175
|
-
* @returns {Promise<void>}
|
|
176
|
-
* @throws {Error} if provided options are not valid
|
|
82
|
+
* Performs a pinch-open gesture.
|
|
177
83
|
*/
|
|
178
84
|
async function mobilePinchOpenGesture(percent, elementId, left, top, width, height, speed) {
|
|
179
85
|
await this.uiautomator2.jwproxy.command('/appium/gestures/pinch_open', 'POST', {
|
|
@@ -184,25 +90,7 @@ async function mobilePinchOpenGesture(percent, elementId, left, top, width, heig
|
|
|
184
90
|
});
|
|
185
91
|
}
|
|
186
92
|
/**
|
|
187
|
-
* Performs a swipe gesture.
|
|
188
|
-
* @this {AndroidUiautomator2Driver}
|
|
189
|
-
* @param {string} direction Direction of the swipe.
|
|
190
|
-
* Acceptable values are: `up`, `down`, `left` and `right` (case insensitive).
|
|
191
|
-
* @param {number} percent The size of the swipe as a percentage of the swipe area size.
|
|
192
|
-
* Valid values must be float numbers in range 0..1, where 1.0 is 100%.
|
|
193
|
-
* @param {string} [elementId] The id of the element to be swiped.
|
|
194
|
-
* If the element id is missing then swipe bounding area must be provided.
|
|
195
|
-
* If both the element id and the swipe bounding area are provided then the
|
|
196
|
-
* area is effectively ignored.
|
|
197
|
-
* @param {number} [left] The left coordinate of the swipe bounding area.
|
|
198
|
-
* @param {number} [top] The top coordinate of the swipe bounding area.
|
|
199
|
-
* @param {number} [width] The width of the swipe bounding area.
|
|
200
|
-
* @param {number} [height] The height of the swipe bounding area.
|
|
201
|
-
* @param {number} [speed] The speed at which to perform this gesture in pixels per second.
|
|
202
|
-
* The value must not be negative.
|
|
203
|
-
* Default is 5000 * displayDensity.
|
|
204
|
-
* @returns {Promise<void>}
|
|
205
|
-
* @throws {Error} if provided options are not valid
|
|
93
|
+
* Performs a swipe gesture for the given direction and percent.
|
|
206
94
|
*/
|
|
207
95
|
async function mobileSwipeGesture(direction, percent, elementId, left, top, width, height, speed) {
|
|
208
96
|
await this.uiautomator2.jwproxy.command('/appium/gestures/swipe', 'POST', {
|
|
@@ -214,29 +102,10 @@ async function mobileSwipeGesture(direction, percent, elementId, left, top, widt
|
|
|
214
102
|
});
|
|
215
103
|
}
|
|
216
104
|
/**
|
|
217
|
-
* Performs a scroll gesture.
|
|
218
|
-
*
|
|
219
|
-
* @throws {Error} if provided options are not valid
|
|
220
|
-
* @this {AndroidUiautomator2Driver}
|
|
221
|
-
* @param {string} direction Direction of the scroll.
|
|
222
|
-
* Acceptable values are: `up`, `down`, `left` and `right` (case insensitive).
|
|
223
|
-
* @param {number} percent The size of the scroll as a percentage of the scrolling area size.
|
|
224
|
-
* Valid values must be float numbers greater than zero, where 1.0 is 100%.
|
|
225
|
-
* @param {string} [elementId] The id of the element to be scrolled.
|
|
226
|
-
* If the element id is missing then scroll bounding area must be provided.
|
|
227
|
-
* If both the element id and the scroll bounding area are provided then this
|
|
228
|
-
* area is effectively ignored.
|
|
229
|
-
* @param {number} [left] The left coordinate of the scroll bounding area.
|
|
230
|
-
* @param {number} [top] The top coordinate of the scroll bounding area.
|
|
231
|
-
* @param {number} [width] The width of the scroll bounding area.
|
|
232
|
-
* @param {number} [height] The height of the scroll bounding area.
|
|
233
|
-
* @param {number} [speed] The speed at which to perform this gesture in pixels per second.
|
|
234
|
-
* The value must not be negative.
|
|
235
|
-
* Default is 5000 * displayDensity.
|
|
236
|
-
* @returns {Promise<boolean>} True if the object can still scroll in the given direction.
|
|
105
|
+
* Performs a scroll gesture and reports if further scrolling is possible.
|
|
237
106
|
*/
|
|
238
107
|
async function mobileScrollGesture(direction, percent, elementId, left, top, width, height, speed) {
|
|
239
|
-
return
|
|
108
|
+
return (await this.uiautomator2.jwproxy.command('/appium/gestures/scroll', 'POST', {
|
|
240
109
|
origin: toOrigin(elementId),
|
|
241
110
|
area: toRect(left, top, width, height),
|
|
242
111
|
direction,
|
|
@@ -245,21 +114,7 @@ async function mobileScrollGesture(direction, percent, elementId, left, top, wid
|
|
|
245
114
|
}));
|
|
246
115
|
}
|
|
247
116
|
/**
|
|
248
|
-
* Scrolls
|
|
249
|
-
* becomes visible. This function returns immediately if the `elementToId`
|
|
250
|
-
* is already visible in the view port. Otherwise it would scroll
|
|
251
|
-
* to the very beginning of the scrollable control and tries to reach the destination element
|
|
252
|
-
* by scrolling its parent to the end step by step. The scroll direction (vertical or horizontal)
|
|
253
|
-
* is detected automatically.
|
|
254
|
-
* @this {AndroidUiautomator2Driver}
|
|
255
|
-
* @param {string} elementId The identifier of the scrollable element, which is going to be scrolled.
|
|
256
|
-
* It is required this element is a valid scrollable container and it was located
|
|
257
|
-
* by `-android uiautomator` strategy.
|
|
258
|
-
* @param {string} elementToId The identifier of the item, which belongs to the scrollable element above,
|
|
259
|
-
* and which should become visible after the scrolling operation is finished.
|
|
260
|
-
* It is required this element was located by `-android uiautomator` strategy.
|
|
261
|
-
* @returns {Promise<void>}
|
|
262
|
-
* @throws {Error} if the scrolling operation cannot be performed
|
|
117
|
+
* Scrolls a scrollable element until a target element becomes visible.
|
|
263
118
|
*/
|
|
264
119
|
async function mobileScrollBackTo(elementId, elementToId) {
|
|
265
120
|
if (!elementId || !elementToId) {
|
|
@@ -268,28 +123,7 @@ async function mobileScrollBackTo(elementId, elementToId) {
|
|
|
268
123
|
await this.uiautomator2.jwproxy.command(`/appium/element/${support_1.util.unwrapElement(elementId)}/scroll_to/${support_1.util.unwrapElement(elementToId)}`, 'POST', {});
|
|
269
124
|
}
|
|
270
125
|
/**
|
|
271
|
-
* Scrolls
|
|
272
|
-
* by `strategy` and `selector` becomes visible. This function returns immediately if the
|
|
273
|
-
* destination element is already visible in the view port. Otherwise it would scroll
|
|
274
|
-
* to the very beginning of the scrollable control and tries to reach the destination element
|
|
275
|
-
* by scrolling its parent to the end step by step. The scroll direction (vertical or horizontal)
|
|
276
|
-
* is detected automatically.
|
|
277
|
-
*
|
|
278
|
-
* @this {AndroidUiautomator2Driver}
|
|
279
|
-
* @param {string} strategy The following strategies are supported:
|
|
280
|
-
* - `accessibility id` (UiSelector().description)
|
|
281
|
-
* - `class name` (UiSelector().className)
|
|
282
|
-
* - `-android uiautomator` (UiSelector)
|
|
283
|
-
* @param {string} selector The corresponding lookup value for the given strategy.
|
|
284
|
-
* @param {string} [elementId] The identifier of an element. It is required this element is a valid scrollable container
|
|
285
|
-
* and it was located by `-android uiautomator` strategy.
|
|
286
|
-
* If this property is not provided then the first currently available scrollable view
|
|
287
|
-
* is selected for the interaction.
|
|
288
|
-
* @param {number} [maxSwipes] The maximum number of swipes to perform on the target scrollable view in order to reach
|
|
289
|
-
* the destination element. In case this value is unset then it would be retrieved from the
|
|
290
|
-
* scrollable element itself (via `getMaxSearchSwipes()` property).
|
|
291
|
-
* @returns {Promise<void>}
|
|
292
|
-
* @throws {Error} if the scrolling operation cannot be performed
|
|
126
|
+
* Scrolls until an element located by the given strategy is visible.
|
|
293
127
|
*/
|
|
294
128
|
async function mobileScroll(strategy, selector, elementId, maxSwipes) {
|
|
295
129
|
if (!strategy || !selector) {
|
|
@@ -300,39 +134,15 @@ async function mobileScroll(strategy, selector, elementId, maxSwipes) {
|
|
|
300
134
|
params: { strategy, selector, maxSwipes },
|
|
301
135
|
});
|
|
302
136
|
}
|
|
303
|
-
// #region Internal Helpers
|
|
304
|
-
/**
|
|
305
|
-
*
|
|
306
|
-
* @param {import('@appium/types').Element|string} [element]
|
|
307
|
-
* @returns {import('@appium/types').Element|undefined}
|
|
308
|
-
*/
|
|
309
137
|
function toOrigin(element) {
|
|
310
138
|
return element ? support_1.util.wrapElement(support_1.util.unwrapElement(element)) : undefined;
|
|
311
139
|
}
|
|
312
|
-
/**
|
|
313
|
-
*
|
|
314
|
-
* @param {number} [x]
|
|
315
|
-
* @param {number} [y]
|
|
316
|
-
* @returns {Partial<import('@appium/types').Position>|undefined}
|
|
317
|
-
*/
|
|
318
140
|
function toPoint(x, y) {
|
|
319
141
|
return lodash_1.default.isFinite(x) && lodash_1.default.isFinite(y) ? { x, y } : undefined;
|
|
320
142
|
}
|
|
321
|
-
/**
|
|
322
|
-
*
|
|
323
|
-
* @param {number} [left]
|
|
324
|
-
* @param {number} [top]
|
|
325
|
-
* @param {number} [width]
|
|
326
|
-
* @param {number} [height]
|
|
327
|
-
* @returns {Partial<import('./types').RelativeRect>|undefined}
|
|
328
|
-
*/
|
|
329
143
|
function toRect(left, top, width, height) {
|
|
330
144
|
return [left, top, width, height].some((v) => !lodash_1.default.isFinite(v))
|
|
331
145
|
? undefined
|
|
332
146
|
: { left, top, width, height };
|
|
333
147
|
}
|
|
334
|
-
// #endregion
|
|
335
|
-
/**
|
|
336
|
-
* @typedef {import('../driver').AndroidUiautomator2Driver} AndroidUiautomator2Driver
|
|
337
|
-
*/
|
|
338
148
|
//# sourceMappingURL=gestures.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gestures.js","sourceRoot":"","sources":["../../../lib/commands/gestures.
|
|
1
|
+
{"version":3,"file":"gestures.js","sourceRoot":"","sources":["../../../lib/commands/gestures.ts"],"names":[],"mappings":"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"}
|