appium_lib 9.7.2 → 9.7.3
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/CHANGELOG.md +13 -0
- data/docs/android_docs.md +220 -168
- data/docs/docs.md +13 -37
- data/docs/ios_docs.md +278 -220
- data/docs/ios_xcuitest.md +0 -4
- data/docs/parallel.md +8 -0
- data/lib/appium_lib/android/android.rb +3 -0
- data/lib/appium_lib/android/common/helper.rb +3 -0
- data/lib/appium_lib/android/espresso.rb +9 -0
- data/lib/appium_lib/android/espresso/bridge.rb +14 -0
- data/lib/appium_lib/common/multi_touch.rb +151 -4
- data/lib/appium_lib/common/touch_actions.rb +21 -0
- data/lib/appium_lib/common/wait.rb +2 -22
- data/lib/appium_lib/core/android.rb +1 -0
- data/lib/appium_lib/core/android/espresso/bridge.rb +18 -0
- data/lib/appium_lib/core/android/touch.rb +15 -0
- data/lib/appium_lib/core/android/uiautomator1/bridge.rb +3 -1
- data/lib/appium_lib/core/android/uiautomator2/bridge.rb +3 -1
- data/lib/appium_lib/core/android_espresso.rb +5 -0
- data/lib/appium_lib/core/android_uiautomator2.rb +1 -0
- data/lib/appium_lib/core/core.rb +1 -1
- data/lib/appium_lib/core/device/touch_actions.rb +8 -23
- data/lib/appium_lib/core/driver.rb +93 -17
- data/lib/appium_lib/core/ios.rb +1 -0
- data/lib/appium_lib/core/ios/touch.rb +16 -0
- data/lib/appium_lib/core/ios/uiautomation/bridge.rb +2 -0
- data/lib/appium_lib/core/ios/xcuitest/bridge.rb +2 -0
- data/lib/appium_lib/core/ios/xcuitest/search_context.rb +23 -12
- data/lib/appium_lib/core/ios_xcuitest.rb +1 -0
- data/lib/appium_lib/driver.rb +18 -15
- data/lib/appium_lib/ios/xcuitest/bridge.rb +1 -0
- data/lib/appium_lib/ios/xcuitest/command.rb +1 -0
- data/lib/appium_lib/ios/xcuitest/command/source.rb +20 -0
- data/lib/appium_lib/version.rb +2 -2
- data/readme.md +14 -29
- data/release_notes.md +8 -0
- metadata +10 -3
- data/lib/appium_lib/core/device/multi_touch.rb +0 -213
data/release_notes.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
#### v9.7.2 2017-10-07
|
2
|
+
|
3
|
+
- [1f20df4](https://github.com/appium/ruby_lib/commit/1f20df4ea663c881d10d173c2df178169f257c95) [Release 9 7 2 (#692)](https://github.com/appium/ruby_lib/issues/692)
|
4
|
+
- [b9bb275](https://github.com/appium/ruby_lib/commit/b9bb2751313ea478ee775d979543f05dc44f9e21) [feature: add flatten_hash_keys (#688)](https://github.com/appium/ruby_lib/issues/688)
|
5
|
+
- [3bdc1f9](https://github.com/appium/ruby_lib/commit/3bdc1f9cf6ad5eb2279dfd6cb43e35fc469720de) [fix: path for uiautomation (#690)](https://github.com/appium/ruby_lib/issues/690)
|
6
|
+
- [3102784](https://github.com/appium/ruby_lib/commit/31027845774373e22b907242944f391ddf755581) [fix: export session (#689)](https://github.com/appium/ruby_lib/issues/689)
|
7
|
+
|
8
|
+
|
1
9
|
#### v9.7.1 2017-10-01
|
2
10
|
|
3
11
|
- [ebde85f](https://github.com/appium/ruby_lib/commit/ebde85fac616ac09e19a5f8215195e536d88344d) [Release 9 7 1 (#682)](https://github.com/appium/ruby_lib/issues/682)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: appium_lib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 9.7.
|
4
|
+
version: 9.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- code@bootstraponline.com
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: selenium-webdriver
|
@@ -249,6 +249,7 @@ files:
|
|
249
249
|
- docs/ios_docs.md
|
250
250
|
- docs/ios_xcuitest.md
|
251
251
|
- docs/migration.md
|
252
|
+
- docs/parallel.md
|
252
253
|
- docs/travis.sample.yml
|
253
254
|
- docs_gen/docs_from_js.md
|
254
255
|
- docs_gen/make_docs.rb
|
@@ -260,6 +261,8 @@ files:
|
|
260
261
|
- lib/appium_lib/android/element/generic.rb
|
261
262
|
- lib/appium_lib/android/element/text.rb
|
262
263
|
- lib/appium_lib/android/element/textfield.rb
|
264
|
+
- lib/appium_lib/android/espresso.rb
|
265
|
+
- lib/appium_lib/android/espresso/bridge.rb
|
263
266
|
- lib/appium_lib/android/uiautomator2.rb
|
264
267
|
- lib/appium_lib/android/uiautomator2/bridge.rb
|
265
268
|
- lib/appium_lib/android/uiautomator2/element.rb
|
@@ -274,9 +277,12 @@ files:
|
|
274
277
|
- lib/appium_lib/common/wait.rb
|
275
278
|
- lib/appium_lib/core/android.rb
|
276
279
|
- lib/appium_lib/core/android/device.rb
|
280
|
+
- lib/appium_lib/core/android/espresso/bridge.rb
|
277
281
|
- lib/appium_lib/core/android/search_context.rb
|
282
|
+
- lib/appium_lib/core/android/touch.rb
|
278
283
|
- lib/appium_lib/core/android/uiautomator1/bridge.rb
|
279
284
|
- lib/appium_lib/core/android/uiautomator2/bridge.rb
|
285
|
+
- lib/appium_lib/core/android_espresso.rb
|
280
286
|
- lib/appium_lib/core/android_uiautomator2.rb
|
281
287
|
- lib/appium_lib/core/common.rb
|
282
288
|
- lib/appium_lib/core/common/base.rb
|
@@ -293,12 +299,12 @@ files:
|
|
293
299
|
- lib/appium_lib/core/common/log.rb
|
294
300
|
- lib/appium_lib/core/common/logger.rb
|
295
301
|
- lib/appium_lib/core/core.rb
|
296
|
-
- lib/appium_lib/core/device/multi_touch.rb
|
297
302
|
- lib/appium_lib/core/device/touch_actions.rb
|
298
303
|
- lib/appium_lib/core/driver.rb
|
299
304
|
- lib/appium_lib/core/ios.rb
|
300
305
|
- lib/appium_lib/core/ios/device.rb
|
301
306
|
- lib/appium_lib/core/ios/search_context.rb
|
307
|
+
- lib/appium_lib/core/ios/touch.rb
|
302
308
|
- lib/appium_lib/core/ios/uiautomation/bridge.rb
|
303
309
|
- lib/appium_lib/core/ios/uiautomation/patch.rb
|
304
310
|
- lib/appium_lib/core/ios/xcuitest/bridge.rb
|
@@ -320,6 +326,7 @@ files:
|
|
320
326
|
- lib/appium_lib/ios/xcuitest/command.rb
|
321
327
|
- lib/appium_lib/ios/xcuitest/command/gestures.rb
|
322
328
|
- lib/appium_lib/ios/xcuitest/command/pasteboard.rb
|
329
|
+
- lib/appium_lib/ios/xcuitest/command/source.rb
|
323
330
|
- lib/appium_lib/ios/xcuitest/element.rb
|
324
331
|
- lib/appium_lib/ios/xcuitest/element/button.rb
|
325
332
|
- lib/appium_lib/ios/xcuitest/element/generic.rb
|
@@ -1,213 +0,0 @@
|
|
1
|
-
module Appium
|
2
|
-
module Core
|
3
|
-
# MultiTouch actions allow for multiple touches to happen at the same time,
|
4
|
-
# for instance, to simulate multiple finger swipes.
|
5
|
-
#
|
6
|
-
# Create a series of touch actions by themselves (without a `prepare()`), then
|
7
|
-
# add to a new MultiTouch action. When ready, call `prepare()` and all
|
8
|
-
# actions will be executed simultaneously.
|
9
|
-
#
|
10
|
-
# ```ruby
|
11
|
-
# action_1 = TouchAction.new.press(x: 45, y: 100).wait(5).release
|
12
|
-
# action_2 = TouchAction.new.tap(element: el, x: 50, y:5, count: 3)
|
13
|
-
#
|
14
|
-
# driver = Appium::Driver.new(opts, false).start_driver
|
15
|
-
# multi_touch_action = MultiTouch.new(driver)
|
16
|
-
# multi_touch_action.add action_1
|
17
|
-
# multi_touch_action.add action_2
|
18
|
-
# multi_touch_action.perform
|
19
|
-
# ```
|
20
|
-
|
21
|
-
class MultiTouch
|
22
|
-
class << self
|
23
|
-
# Convenience method for pinching the screen.
|
24
|
-
# Places two fingers at the edges of the screen and brings them together.
|
25
|
-
# @param percentage (int) The percent size by which to shrink the screen when pinched.
|
26
|
-
# @param auto_perform (boolean) Whether to perform the action immediately (default true)
|
27
|
-
# @param driver (Driver) Set a driver to conduct the action. DEfault is global driver($driver)
|
28
|
-
#
|
29
|
-
# ```ruby
|
30
|
-
# driver = Appium::Driver.new(opts, false).start_driver
|
31
|
-
# pinch percentage: 75, driver: driver #=> Pinch the screen from the top right and bottom left corners
|
32
|
-
# ```
|
33
|
-
#
|
34
|
-
# Without auto_perform
|
35
|
-
#
|
36
|
-
# ```ruby
|
37
|
-
# driver = Appium::Driver.new(opts, false).start_driver
|
38
|
-
# action = pinch percentage: 75, auto_perform: false, driver: driver
|
39
|
-
# #=> Pinch the screen from the top right and bottom left corners
|
40
|
-
# action.perform #=> to 25% of its size.
|
41
|
-
# ```
|
42
|
-
def pinch(percentage: 25, auto_perform: true, driver:)
|
43
|
-
raise ArgumentError("Can't pinch to greater than screen size.") if percentage > 100
|
44
|
-
|
45
|
-
rate = Float(percentage) / 100
|
46
|
-
pinch = MultiTouch.new(driver)
|
47
|
-
|
48
|
-
# TODO: Don't use driver automation handler here.
|
49
|
-
if pinch.driver.automation_name_is_xcuitest?
|
50
|
-
top, bottom = pinch_for_xcuitest(rate, pinch.driver)
|
51
|
-
elsif pinch.driver.device_is_android?
|
52
|
-
top, bottom = pinch_android(rate, pinch.driver)
|
53
|
-
else
|
54
|
-
top, bottom = pinch_ios(rate, pinch.driver)
|
55
|
-
end
|
56
|
-
|
57
|
-
pinch.add top
|
58
|
-
pinch.add bottom
|
59
|
-
return pinch unless auto_perform
|
60
|
-
pinch.perform
|
61
|
-
end
|
62
|
-
|
63
|
-
# Convenience method for zooming the screen.
|
64
|
-
# Places two fingers at the edges of the screen and brings them together.
|
65
|
-
# @param percentage (int) The percent size by which to shrink the screen when pinched.
|
66
|
-
# @param auto_perform (boolean) Whether to perform the action immediately (default true)
|
67
|
-
# @param driver (Driver) Set a driver to conduct the action. DEfault is global driver($driver)
|
68
|
-
#
|
69
|
-
# ```ruby
|
70
|
-
# driver = Appium::Driver.new(opts, false).start_driver
|
71
|
-
# action = zoom percentage: 200, driver: driver #=> Zoom in the screen from the center until it doubles in size.
|
72
|
-
# ```
|
73
|
-
#
|
74
|
-
# Without auto_perform
|
75
|
-
#
|
76
|
-
# ```ruby
|
77
|
-
# driver = Appium::Driver.new(opts, false).start_driver
|
78
|
-
# action = zoom percentage: 200, auto_perform: false, driver: driver
|
79
|
-
# #=> Zoom in the screen from the center until it doubles in size.
|
80
|
-
# action.perform #=> to 25% of its size.
|
81
|
-
# ```
|
82
|
-
def zoom(percentage: 200, auto_perform: true, driver:)
|
83
|
-
raise ArgumentError("Can't zoom to smaller then screen size.") if percentage < 100
|
84
|
-
|
85
|
-
rate = 100 / Float(percentage)
|
86
|
-
zoom = MultiTouch.new(driver)
|
87
|
-
|
88
|
-
# TODO: Don't use driver automation handler here.
|
89
|
-
if zoom.driver.automation_name_is_xcuitest?
|
90
|
-
top, bottom = zoom_for_xcuitest(rate, zoom.driver)
|
91
|
-
elsif zoom.driver.device_is_android?
|
92
|
-
top, bottom = zoom_android(rate, zoom.driver)
|
93
|
-
else
|
94
|
-
top, bottom = zoom_ios(rate, zoom.driver)
|
95
|
-
end
|
96
|
-
|
97
|
-
zoom.add top
|
98
|
-
zoom.add bottom
|
99
|
-
return zoom unless auto_perform
|
100
|
-
zoom.perform
|
101
|
-
end
|
102
|
-
|
103
|
-
private
|
104
|
-
|
105
|
-
def pinch_for_xcuitest(rate, driver)
|
106
|
-
height = 100
|
107
|
-
|
108
|
-
ele = driver.find_element :class, 'XCUIElementTypeApplication'
|
109
|
-
top = ::Appium::Core::TouchAction.new(driver)
|
110
|
-
top.swipe({ start_x: 0.5, start_y: 0.0,
|
111
|
-
offset_x: 0.0, offset_y: (1 - rate) * height }, ele)
|
112
|
-
|
113
|
-
bottom = ::Appium::Core::TouchAction.new(driver)
|
114
|
-
bottom.swipe({ start_x: 0.5, start_y: 1.0,
|
115
|
-
offset_x: 0.0, offset_y: rate * height }, ele)
|
116
|
-
|
117
|
-
[top, bottom]
|
118
|
-
end
|
119
|
-
|
120
|
-
def pinch_android(rate, driver)
|
121
|
-
height = 100
|
122
|
-
|
123
|
-
top = ::Appium::Core::TouchAction.new(driver)
|
124
|
-
top.swipe start_x: 0.5, start_y: 1.0 * height,
|
125
|
-
end_x: 0.5, end_y: rate * height, duration: 1_000
|
126
|
-
|
127
|
-
bottom = ::Appium::Core::TouchAction.new(driver)
|
128
|
-
bottom.swipe start_x: 0.5, start_y: 0.0,
|
129
|
-
end_x: 0.5, end_y: (1 - rate) * height, duration: 1_000
|
130
|
-
|
131
|
-
[top, bottom]
|
132
|
-
end
|
133
|
-
|
134
|
-
def pinch_ios(rate, driver)
|
135
|
-
height = 100
|
136
|
-
|
137
|
-
top = ::Appium::Core::TouchAction.new(driver)
|
138
|
-
top.swipe start_x: 0.5, start_y: 0.0,
|
139
|
-
offset_x: 0.0, offset_y: (1 - rate) * height, duration: 1_000
|
140
|
-
|
141
|
-
bottom = ::Appium::Core::TouchAction.new(driver)
|
142
|
-
bottom.swipe start_x: 0.5, start_y: 1.0,
|
143
|
-
offset_x: 0.0, offset_y: rate * height, duration: 1_000
|
144
|
-
|
145
|
-
[top, bottom]
|
146
|
-
end
|
147
|
-
|
148
|
-
def zoom_for_xcuitest(rate, driver)
|
149
|
-
height = 100
|
150
|
-
|
151
|
-
ele = driver.find_element :class, 'XCUIElementTypeApplication'
|
152
|
-
top = ::Appium::Core::TouchAction.new(driver)
|
153
|
-
top.swipe({ start_x: 0.5, start_y: (1 - rate) * height,
|
154
|
-
offset_x: 0.0, offset_y: - (1 - rate) * height }, ele)
|
155
|
-
|
156
|
-
bottom = ::Appium::Core::TouchAction.new(driver)
|
157
|
-
bottom.swipe({ start_x: 0.5, start_y: rate * height,
|
158
|
-
offset_x: 0.0, offset_y: (1 - rate) * height }, ele)
|
159
|
-
|
160
|
-
[top, bottom]
|
161
|
-
end
|
162
|
-
|
163
|
-
def zoom_android(rate, driver)
|
164
|
-
height = 100
|
165
|
-
|
166
|
-
top = ::Appium::Core::TouchAction.new(driver)
|
167
|
-
top.swipe start_x: 0.5, start_y: (1.0 - rate) * height,
|
168
|
-
end_x: 0.5, end_y: 0.0, duration: 1_000
|
169
|
-
|
170
|
-
bottom = ::Appium::Core::TouchAction.new(driver)
|
171
|
-
bottom.swipe start_x: 0.5, start_y: rate * height,
|
172
|
-
end_x: 0.5, end_y: 1.0 * height, duration: 1_000
|
173
|
-
|
174
|
-
[top, bottom]
|
175
|
-
end
|
176
|
-
|
177
|
-
def zoom_ios(rate, driver)
|
178
|
-
height = 100
|
179
|
-
|
180
|
-
top = ::Appium::Core::TouchAction.new(driver)
|
181
|
-
top.swipe start_x: 0.5, start_y: (1 - rate) * height,
|
182
|
-
offset_x: 0.0, offset_y: - (1 - rate) * height, duration: 1_000
|
183
|
-
|
184
|
-
bottom = ::Appium::Core::TouchAction.new(driver)
|
185
|
-
bottom.swipe start_x: 0.5, start_y: rate * height,
|
186
|
-
offset_x: 0.0, offset_y: (1 - rate) * height, duration: 1_000
|
187
|
-
|
188
|
-
[top, bottom]
|
189
|
-
end
|
190
|
-
end # self
|
191
|
-
|
192
|
-
attr_reader :actions, :driver
|
193
|
-
|
194
|
-
# Create a new multi-action with Driver
|
195
|
-
def initialize(driver)
|
196
|
-
@actions = []
|
197
|
-
@driver = driver
|
198
|
-
end
|
199
|
-
|
200
|
-
# Add a touch_action to be performed
|
201
|
-
# @param chain (TouchAction) The action to add to the chain
|
202
|
-
def add(chain)
|
203
|
-
@actions << chain.actions
|
204
|
-
end
|
205
|
-
|
206
|
-
# Ask Appium to perform the actions
|
207
|
-
def perform
|
208
|
-
@driver.multi_touch @actions
|
209
|
-
@actions.clear
|
210
|
-
end
|
211
|
-
end # class MultiTouch
|
212
|
-
end # module Core
|
213
|
-
end # module Appium
|