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.
@@ -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 AndroidAttributeModule
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::AndroidAttributeModule
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 selector
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] existing locator element
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"