testa_appium_driver 0.1.0 → 0.1.4
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.idea/deployment.xml +2 -9
- data/.idea/webServers.xml +1 -1
- data/README.md +365 -52
- data/lib/testa_appium_driver/android/class_selectors.rb +50 -0
- data/lib/testa_appium_driver/android/driver.rb +2 -1
- data/lib/testa_appium_driver/android/locator/attributes.rb +4 -4
- data/lib/testa_appium_driver/android/locator.rb +17 -5
- data/lib/testa_appium_driver/android/selenium_element.rb +1 -1
- data/lib/testa_appium_driver/common/constants.rb +2 -0
- data/lib/testa_appium_driver/common/helpers.rb +26 -28
- data/lib/testa_appium_driver/common/locator/scroll_actions.rb +152 -58
- data/lib/testa_appium_driver/common/locator.rb +58 -10
- data/lib/testa_appium_driver/common/scroll_actions/w3c_scroll_actions.rb +12 -4
- data/lib/testa_appium_driver/common/scroll_actions.rb +36 -33
- data/lib/testa_appium_driver/common/selenium_element.rb +19 -0
- data/lib/testa_appium_driver/driver.rb +41 -41
- data/lib/testa_appium_driver/ios/driver.rb +1 -0
- data/lib/testa_appium_driver/ios/locator/attributes.rb +5 -3
- data/lib/testa_appium_driver/ios/locator.rb +17 -4
- data/lib/testa_appium_driver/version.rb +1 -1
- data/testa_appium_driver.gemspec +41 -40
- data/testa_appium_driver.iml +1 -35
- metadata +11 -8
@@ -20,12 +20,14 @@ module TestaAppiumDriver
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
+
# first element that match given selectors
|
23
24
|
# @param selectors [Hash]
|
24
25
|
# @return [TestaAppiumDriver::Locator] first element
|
25
26
|
def element(selectors = {})
|
26
27
|
add_selector(selectors)
|
27
28
|
end
|
28
29
|
|
30
|
+
# all elements that match given selectors
|
29
31
|
# @param params [Hash]
|
30
32
|
# @return [TestaAppiumDriver::Locator] all elements that match given selectors
|
31
33
|
def elements(params = {})
|
@@ -34,6 +36,7 @@ module TestaAppiumDriver
|
|
34
36
|
end
|
35
37
|
|
36
38
|
|
39
|
+
# first element that has scrollable: true
|
37
40
|
# @param selectors [Hash]
|
38
41
|
# @return [TestaAppiumDriver::Locator] first scrollable element
|
39
42
|
def scrollable(selectors = {})
|
@@ -41,6 +44,7 @@ module TestaAppiumDriver
|
|
41
44
|
add_selector(selectors)
|
42
45
|
end
|
43
46
|
|
47
|
+
# all elements that have scrollable: true
|
44
48
|
# @param params [Hash]
|
45
49
|
# @return [TestaAppiumDriver::Locator] first scrollable element
|
46
50
|
def scrollables(params = {})
|
@@ -50,12 +54,14 @@ module TestaAppiumDriver
|
|
50
54
|
end
|
51
55
|
|
52
56
|
|
57
|
+
# first android.widget.ImageView element that match given selectors
|
53
58
|
# @return [TestaAppiumDriver::Locator]
|
54
59
|
def image_view(params = {})
|
55
60
|
params[:class] = "android.widget.ImageView"
|
56
61
|
add_selector(params)
|
57
62
|
end
|
58
63
|
|
64
|
+
# all android.widget.ImageView elements that match given selectors
|
59
65
|
# @return [TestaAppiumDriver::Locator]
|
60
66
|
def image_views(params = {})
|
61
67
|
params[:class] = "android.widget.ImageView"
|
@@ -63,12 +69,14 @@ module TestaAppiumDriver
|
|
63
69
|
add_selector(params)
|
64
70
|
end
|
65
71
|
|
72
|
+
# first android.widget.FrameLayout element that match given selectors
|
66
73
|
# @return [TestaAppiumDriver::Locator]
|
67
74
|
def frame_layout(params = {})
|
68
75
|
params[:class] = "android.widget.FrameLayout"
|
69
76
|
add_selector(params)
|
70
77
|
end
|
71
78
|
|
79
|
+
# all android.widget.FrameLayout elements that match given selectors
|
72
80
|
# @return [TestaAppiumDriver::Locator]
|
73
81
|
def frame_layouts(params = {})
|
74
82
|
params[:class] = "android.widget.FrameLayout"
|
@@ -76,12 +84,14 @@ module TestaAppiumDriver
|
|
76
84
|
add_selector(params)
|
77
85
|
end
|
78
86
|
|
87
|
+
# first android.widget.LinearLayout element that match given selectors
|
79
88
|
# @return [TestaAppiumDriver::Locator]
|
80
89
|
def linear_layout(params = {})
|
81
90
|
params[:class] = "android.widget.LinearLayout"
|
82
91
|
add_selector(params)
|
83
92
|
end
|
84
93
|
|
94
|
+
# all android.widget.LinearLayout elements that match given selectors
|
85
95
|
# @return [TestaAppiumDriver::Locator]
|
86
96
|
def linear_layouts(params = {})
|
87
97
|
params[:class] = "android.widget.LinearLayout"
|
@@ -89,12 +99,14 @@ module TestaAppiumDriver
|
|
89
99
|
add_selector(params)
|
90
100
|
end
|
91
101
|
|
102
|
+
# first android.view.View element that match given selectors
|
92
103
|
# @return [TestaAppiumDriver::Locator]
|
93
104
|
def view(params = {})
|
94
105
|
params[:class] = "android.view.View"
|
95
106
|
add_selector(params)
|
96
107
|
end
|
97
108
|
|
109
|
+
# all android.view.View elements that match given selectors
|
98
110
|
# @return [TestaAppiumDriver::Locator]
|
99
111
|
def views(params = {})
|
100
112
|
params[:class] = "android.view.View"
|
@@ -102,12 +114,14 @@ module TestaAppiumDriver
|
|
102
114
|
add_selector(params)
|
103
115
|
end
|
104
116
|
|
117
|
+
# first android.widget.EditText element that match given selectors
|
105
118
|
# @return [TestaAppiumDriver::Locator]
|
106
119
|
def edit_text(params = {})
|
107
120
|
params[:class] = "android.widget.EditText"
|
108
121
|
add_selector(params)
|
109
122
|
end
|
110
123
|
|
124
|
+
# all android.widget.EditText elements that match given selectors
|
111
125
|
# @return [TestaAppiumDriver::Locator]
|
112
126
|
def edit_texts(params = {})
|
113
127
|
params[:class] = "android.widget.EditText"
|
@@ -115,12 +129,14 @@ module TestaAppiumDriver
|
|
115
129
|
add_selector(params)
|
116
130
|
end
|
117
131
|
|
132
|
+
# first android.widget.ViewGroup element that match given selectors
|
118
133
|
# @return [TestaAppiumDriver::Locator]
|
119
134
|
def view_group(params = {})
|
120
135
|
params[:class] = "android.widget.ViewGroup"
|
121
136
|
add_selector(params)
|
122
137
|
end
|
123
138
|
|
139
|
+
# all android.widget.ViewGroup elements that match given selectors
|
124
140
|
# @return [TestaAppiumDriver::Locator]
|
125
141
|
def view_groups(params = {})
|
126
142
|
params[:class] = "android.widget.ViewGroup"
|
@@ -128,12 +144,14 @@ module TestaAppiumDriver
|
|
128
144
|
add_selector(params)
|
129
145
|
end
|
130
146
|
|
147
|
+
# first android.widget.RelativeLayout element that match given selecotrs
|
131
148
|
# @return [TestaAppiumDriver::Locator]
|
132
149
|
def relative_layout(params = {})
|
133
150
|
params[:class] = "android.widget.RelativeLayout"
|
134
151
|
add_selector(params)
|
135
152
|
end
|
136
153
|
|
154
|
+
# all android.widget.RelativeLayout elements that match given selectors
|
137
155
|
# @return [TestaAppiumDriver::Locator]
|
138
156
|
def relative_layouts(params = {})
|
139
157
|
params[:class] = "android.widget.RelativeLayout"
|
@@ -141,12 +159,14 @@ module TestaAppiumDriver
|
|
141
159
|
add_selector(params)
|
142
160
|
end
|
143
161
|
|
162
|
+
# first androidx.recyclerview.widget.RecyclerView element that match given selectors
|
144
163
|
# @return [TestaAppiumDriver::Locator]
|
145
164
|
def recycler_view(params = {})
|
146
165
|
params[:class] = "androidx.recyclerview.widget.RecyclerView"
|
147
166
|
add_selector(params)
|
148
167
|
end
|
149
168
|
|
169
|
+
# all androidx.recyclerview.widget.RecyclerView elements that match given selectors
|
150
170
|
# @return [TestaAppiumDriver::Locator]
|
151
171
|
def recycler_views(params = {})
|
152
172
|
params[:class] = "androidx.recyclerview.widget.RecyclerView"
|
@@ -154,12 +174,14 @@ module TestaAppiumDriver
|
|
154
174
|
add_selector(params)
|
155
175
|
end
|
156
176
|
|
177
|
+
# first android.widget.Button element that match given selectors
|
157
178
|
# @return [TestaAppiumDriver::Locator]
|
158
179
|
def button(params = {})
|
159
180
|
params[:class] = "android.widget.Button"
|
160
181
|
add_selector(params)
|
161
182
|
end
|
162
183
|
|
184
|
+
# all android.widget.Button elements that match given selectors
|
163
185
|
# @return [TestaAppiumDriver::Locator]
|
164
186
|
def buttons(params = {})
|
165
187
|
params[:class] = "android.widget.Button"
|
@@ -167,12 +189,14 @@ module TestaAppiumDriver
|
|
167
189
|
add_selector(params)
|
168
190
|
end
|
169
191
|
|
192
|
+
# first android.widget.ImageButton element that match given selectors
|
170
193
|
# @return [TestaAppiumDriver::Locator]
|
171
194
|
def image_button(params = {})
|
172
195
|
params[:class] = "android.widget.ImageButton"
|
173
196
|
add_selector(params)
|
174
197
|
end
|
175
198
|
|
199
|
+
# all android.widget.ImageButton elements that match given selectors
|
176
200
|
# @return [TestaAppiumDriver::Locator]
|
177
201
|
def image_buttons(params = {})
|
178
202
|
params[:class] = "android.widget.ImageButton"
|
@@ -180,12 +204,14 @@ module TestaAppiumDriver
|
|
180
204
|
add_selector(params)
|
181
205
|
end
|
182
206
|
|
207
|
+
# first android.widget.HorizontalScrollView element that match given selectors
|
183
208
|
# @return [TestaAppiumDriver::Locator]
|
184
209
|
def horizontal_scroll_view(params = {})
|
185
210
|
params[:class] = "android.widget.HorizontalScrollView"
|
186
211
|
add_selector(params)
|
187
212
|
end
|
188
213
|
|
214
|
+
# all android.widget.HorizontalScrollView elements that match given selectors
|
189
215
|
# @return [TestaAppiumDriver::Locator]
|
190
216
|
def horizontal_scroll_views(params = {})
|
191
217
|
params[:class] = "android.widget.HorizontalScrollView"
|
@@ -193,12 +219,14 @@ module TestaAppiumDriver
|
|
193
219
|
add_selector(params)
|
194
220
|
end
|
195
221
|
|
222
|
+
# first android.widget.ScrollView element that match given selectors
|
196
223
|
# @return [TestaAppiumDriver::Locator]
|
197
224
|
def scroll_view(params = {})
|
198
225
|
params[:class] = "android.widget.ScrollView"
|
199
226
|
add_selector(params)
|
200
227
|
end
|
201
228
|
|
229
|
+
# all android.widget.ScrollView elements that match given selectors
|
202
230
|
# @return [TestaAppiumDriver::Locator]
|
203
231
|
def scroll_views(params = {})
|
204
232
|
params[:class] = "android.widget.ScrollView"
|
@@ -206,12 +234,14 @@ module TestaAppiumDriver
|
|
206
234
|
add_selector(params)
|
207
235
|
end
|
208
236
|
|
237
|
+
# first viewpager.widget.ViewPager element that match given selectors
|
209
238
|
# @return [TestaAppiumDriver::Locator]
|
210
239
|
def view_pager(params = {})
|
211
240
|
params[:class] = "androidx.viewpager.widget.ViewPager"
|
212
241
|
add_selector(params)
|
213
242
|
end
|
214
243
|
|
244
|
+
# all viewpager.widget.ViewPager elements that match given selectors
|
215
245
|
# @return [TestaAppiumDriver::Locator]
|
216
246
|
def view_pagers(params = {})
|
217
247
|
params[:class] = "androidx.viewpager.widget.ViewPager"
|
@@ -219,12 +249,14 @@ module TestaAppiumDriver
|
|
219
249
|
add_selector(params)
|
220
250
|
end
|
221
251
|
|
252
|
+
# first android.widget.CheckBox element that match given selectors
|
222
253
|
# @return [TestaAppiumDriver::Locator]
|
223
254
|
def check_box(params = {})
|
224
255
|
params[:class] = "android.widget.CheckBox"
|
225
256
|
add_selector(params)
|
226
257
|
end
|
227
258
|
|
259
|
+
# all android.widget.CheckBox elements that match given selectors
|
228
260
|
# @return [TestaAppiumDriver::Locator]
|
229
261
|
def check_boxes(params = {})
|
230
262
|
params[:class] = "android.widget.CheckBox"
|
@@ -232,12 +264,14 @@ module TestaAppiumDriver
|
|
232
264
|
add_selector(params)
|
233
265
|
end
|
234
266
|
|
267
|
+
# first android.widget.ListView element that match given selectors
|
235
268
|
# @return [TestaAppiumDriver::Locator]
|
236
269
|
def list_view(params = {})
|
237
270
|
params[:class] = "android.widget.ListView"
|
238
271
|
add_selector(params)
|
239
272
|
end
|
240
273
|
|
274
|
+
# all android.widget.ListView elements that match given selectors
|
241
275
|
# @return [TestaAppiumDriver::Locator]
|
242
276
|
def list_views(params = {})
|
243
277
|
params[:class] = "android.widget.ListView"
|
@@ -245,12 +279,14 @@ module TestaAppiumDriver
|
|
245
279
|
add_selector(params)
|
246
280
|
end
|
247
281
|
|
282
|
+
# first android.widget.ProgressBar element that match given selectors
|
248
283
|
# @return [TestaAppiumDriver::Locator]
|
249
284
|
def progress_bar(params = {})
|
250
285
|
params[:class] = "android.widget.ProgressBar"
|
251
286
|
add_selector(params)
|
252
287
|
end
|
253
288
|
|
289
|
+
# all android.widget.ProgressBar elements that match given selectors
|
254
290
|
# @return [TestaAppiumDriver::Locator]
|
255
291
|
def progress_bars(params = {})
|
256
292
|
params[:class] = "android.widget.ProgressBar"
|
@@ -258,12 +294,14 @@ module TestaAppiumDriver
|
|
258
294
|
add_selector(params)
|
259
295
|
end
|
260
296
|
|
297
|
+
# first android.widget.RadioButton element that match given selectors
|
261
298
|
# @return [TestaAppiumDriver::Locator]
|
262
299
|
def radio_button(params = {})
|
263
300
|
params[:class] = "android.widget.RadioButton"
|
264
301
|
add_selector(params)
|
265
302
|
end
|
266
303
|
|
304
|
+
# all android.widget.RadioButton elements that match given selectors
|
267
305
|
# @return [TestaAppiumDriver::Locator]
|
268
306
|
def radio_buttons(params = {})
|
269
307
|
params[:class] = "android.widget.RadioButton"
|
@@ -271,12 +309,14 @@ module TestaAppiumDriver
|
|
271
309
|
add_selector(params)
|
272
310
|
end
|
273
311
|
|
312
|
+
# first android.widget.RadioGroup element that match given selectors
|
274
313
|
# @return [TestaAppiumDriver::Locator]
|
275
314
|
def radio_group(params = {})
|
276
315
|
params[:class] = "android.widget.RadioGroup"
|
277
316
|
add_selector(params)
|
278
317
|
end
|
279
318
|
|
319
|
+
# all android.widget.RadioGroup elements that match given selectors
|
280
320
|
# @return [TestaAppiumDriver::Locator]
|
281
321
|
def radio_groups(params = {})
|
282
322
|
params[:class] = "android.widget.RadioGroup"
|
@@ -284,12 +324,14 @@ module TestaAppiumDriver
|
|
284
324
|
add_selector(params)
|
285
325
|
end
|
286
326
|
|
327
|
+
# first android.widget.SearchView element that match given selectors
|
287
328
|
# @return [TestaAppiumDriver::Locator]
|
288
329
|
def search_view(params = {})
|
289
330
|
params[:class] = "android.widget.SearchView"
|
290
331
|
add_selector(params)
|
291
332
|
end
|
292
333
|
|
334
|
+
# all android.widget.SearchView elements that match given selectors
|
293
335
|
# @return [TestaAppiumDriver::Locator]
|
294
336
|
def search_views(params = {})
|
295
337
|
params[:class] = "android.widget.SearchView"
|
@@ -297,12 +339,14 @@ module TestaAppiumDriver
|
|
297
339
|
add_selector(params)
|
298
340
|
end
|
299
341
|
|
342
|
+
# first android.widget.Spinner element that match given selectors
|
300
343
|
# @return [TestaAppiumDriver::Locator]
|
301
344
|
def spinner(params = {})
|
302
345
|
params[:class] = "android.widget.Spinner"
|
303
346
|
add_selector(params)
|
304
347
|
end
|
305
348
|
|
349
|
+
# all android.widget.Spinner elements that match given selectors
|
306
350
|
# @return [TestaAppiumDriver::Locator]
|
307
351
|
def spinners(params = {})
|
308
352
|
params[:class] = "android.widget.Spinner"
|
@@ -310,12 +354,14 @@ module TestaAppiumDriver
|
|
310
354
|
add_selector(params)
|
311
355
|
end
|
312
356
|
|
357
|
+
# first android.widget.Toast element that match given selectors
|
313
358
|
# @return [TestaAppiumDriver::Locator]
|
314
359
|
def toast(params = {})
|
315
360
|
params[:class] = "android.widget.Toast"
|
316
361
|
add_selector(params)
|
317
362
|
end
|
318
363
|
|
364
|
+
# all android.widget.Toast elements that match given selectors
|
319
365
|
# @return [TestaAppiumDriver::Locator]
|
320
366
|
def toasts(params = {})
|
321
367
|
params[:class] = "android.widget.Toast"
|
@@ -323,12 +369,14 @@ module TestaAppiumDriver
|
|
323
369
|
add_selector(params)
|
324
370
|
end
|
325
371
|
|
372
|
+
# first android.widget.Toolbar element that match given selectors
|
326
373
|
# @return [TestaAppiumDriver::Locator]
|
327
374
|
def toolbar(params = {})
|
328
375
|
params[:class] = "android.widget.Toolbar"
|
329
376
|
add_selector(params)
|
330
377
|
end
|
331
378
|
|
379
|
+
# all android.widget.Toolbar elements that match given selectors
|
332
380
|
# @return [TestaAppiumDriver::Locator]
|
333
381
|
def toolbars(params = {})
|
334
382
|
params[:class] = "android.widget.Toolbar"
|
@@ -336,12 +384,14 @@ module TestaAppiumDriver
|
|
336
384
|
add_selector(params)
|
337
385
|
end
|
338
386
|
|
387
|
+
# first android.widget.TextView element that match given selectors
|
339
388
|
# @return [TestaAppiumDriver::Locator]
|
340
389
|
def text_view(params = {})
|
341
390
|
params[:class] = "android.widget.TextView"
|
342
391
|
add_selector(params)
|
343
392
|
end
|
344
393
|
|
394
|
+
# all android.widget.TextView elements that match given selectors
|
345
395
|
# @return [TestaAppiumDriver::Locator]
|
346
396
|
def text_views(params = {})
|
347
397
|
params[:class] = "android.widget.TextView"
|
@@ -8,11 +8,11 @@ module TestaAppiumDriver
|
|
8
8
|
include ClassSelectors
|
9
9
|
|
10
10
|
|
11
|
+
# executes shell command
|
11
12
|
# @param [String] command Shell command name to execute for example echo or rm
|
12
13
|
# @param [Array<String>] args Array of command arguments, example: ['-f', '/sdcard/my_file.txt']
|
13
14
|
# @param [Integer] timeout Command timeout in milliseconds. If the command blocks for longer than this timeout then an exception is going to be thrown. The default timeout is 20000 ms
|
14
15
|
# @param [Boolean] includeStderr Whether to include stderr stream into the returned result.
|
15
|
-
#noinspection RubyParameterNamingConvention
|
16
16
|
def shell(command, args: nil, timeout: nil, includeStderr: true)
|
17
17
|
params = {
|
18
18
|
command: command,
|
@@ -24,6 +24,7 @@ module TestaAppiumDriver
|
|
24
24
|
end
|
25
25
|
|
26
26
|
|
27
|
+
private
|
27
28
|
def handle_testa_opts
|
28
29
|
if @testa_opts[:default_find_strategy].nil?
|
29
30
|
@default_find_strategy = DEFAULT_ANDROID_FIND_STRATEGY
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module TestaAppiumDriver
|
2
|
-
module
|
2
|
+
module Attributes
|
3
3
|
|
4
4
|
#noinspection RubyNilAnalysis
|
5
5
|
def attribute(name, *args)
|
@@ -63,8 +63,8 @@ module TestaAppiumDriver
|
|
63
63
|
attribute("longClickable", *args).to_s == "true"
|
64
64
|
end
|
65
65
|
|
66
|
-
def password(*args)
|
67
|
-
attribute("password", *args)
|
66
|
+
def password?(*args)
|
67
|
+
attribute("password", *args).to_s == "true"
|
68
68
|
end
|
69
69
|
|
70
70
|
def id(*args)
|
@@ -98,7 +98,7 @@ module TestaAppiumDriver
|
|
98
98
|
end
|
99
99
|
|
100
100
|
class Locator
|
101
|
-
include TestaAppiumDriver::
|
101
|
+
include TestaAppiumDriver::Attributes
|
102
102
|
|
103
103
|
|
104
104
|
# element index in parent element, starts from 0
|
@@ -19,6 +19,15 @@ module TestaAppiumDriver
|
|
19
19
|
else
|
20
20
|
@scroll_orientation = :vertical
|
21
21
|
end
|
22
|
+
|
23
|
+
if !params[:top].nil? || !params[:bottom].nil? || !params[:right].nil? || !params[:left].nil?
|
24
|
+
@scroll_deadzone = {}
|
25
|
+
@scroll_deadzone[:top] = params[:top].to_f unless params[:top].nil?
|
26
|
+
@scroll_deadzone[:bottom] = params[:bottom].to_f unless params[:bottom].nil?
|
27
|
+
@scroll_deadzone[:right] = params[:right].to_f unless params[:right].nil?
|
28
|
+
@scroll_deadzone[:left] = params[:left].to_f unless params[:left].nil?
|
29
|
+
end
|
30
|
+
|
22
31
|
params[:scrollable_locator] = self.dup
|
23
32
|
end
|
24
33
|
|
@@ -27,16 +36,18 @@ module TestaAppiumDriver
|
|
27
36
|
|
28
37
|
|
29
38
|
# resolve selector which will be used for finding element
|
30
|
-
def
|
39
|
+
def strategy_and_selector
|
40
|
+
if @can_use_id_strategy
|
41
|
+
return FIND_STRATEGY_ID, @can_use_id_strategy
|
42
|
+
end
|
31
43
|
if (@strategy.nil? && @default_find_strategy == FIND_STRATEGY_UIAUTOMATOR) || @strategy == FIND_STRATEGY_UIAUTOMATOR
|
32
|
-
ui_selector
|
44
|
+
[FIND_STRATEGY_UIAUTOMATOR, ui_selector]
|
33
45
|
elsif (@strategy.nil? && @default_find_strategy == FIND_STRATEGY_XPATH) || @strategy == FIND_STRATEGY_XPATH
|
34
|
-
@xpath_selector
|
46
|
+
[FIND_STRATEGY_XPATH, @xpath_selector]
|
35
47
|
end
|
36
48
|
end
|
37
49
|
|
38
50
|
|
39
|
-
|
40
51
|
# @param [Boolean] include_semicolon should the semicolon be included at the end
|
41
52
|
# @return ui_selector for uiautomator find strategy
|
42
53
|
def ui_selector(include_semicolon = true)
|
@@ -64,13 +75,14 @@ module TestaAppiumDriver
|
|
64
75
|
end
|
65
76
|
|
66
77
|
|
67
|
-
# @return [Locator]
|
78
|
+
# @return [Locator] new child locator element
|
68
79
|
def add_child_selector(params)
|
69
80
|
params, selectors = extract_selectors_from_params(params)
|
70
81
|
single = params[:single]
|
71
82
|
raise "Cannot add child selector to Array" if single && !@single
|
72
83
|
|
73
84
|
locator = self.dup
|
85
|
+
locator.can_use_id_strategy = false
|
74
86
|
if (@strategy.nil? && !single) || @strategy == FIND_STRATEGY_XPATH
|
75
87
|
locator.strategy = FIND_STRATEGY_XPATH
|
76
88
|
locator.strategy_reason = "multiple child selector"
|