Class: Appium::MultiTouch
- Defined in:
- lib/appium_lib/device/multi_touch.rb
Overview
MultiTouch actions allow for multiple touches to happen at the same time, for instance, to simulate multiple finger swipes.
Create a series of touch actions by themselves (without a ‘prepare()`), then add to a new MultiTouch action. When ready, call `prepare()` and all actions will be executed simultaneously.
“‘ruby action_1 = TouchAction.new.press(x: 45, y: 100).wait(5).release action_2 = TouchAction.new.tap(element: el, x: 50, y:5, count: 3).release
multi_touch_action = MultiTouch.new multi_touch_action.add action_1 multi_touch_action.add action_2 multi_touch_action.perform
Class Method Summary collapse
-
.pinch(percentage = 25, auto_perform = true) ⇒ Object
Convenience method for pinching the screen.
-
.zoom(percentage = 200, auto_perform = true) ⇒ Object
Convenience method for zooming the screen.
Instance Method Summary collapse
-
#add(chain) ⇒ Object
Add a touch_action to be performed.
-
#initialize ⇒ MultiTouch
constructor
Create a new multi-action.
-
#perform ⇒ Object
Ask Appium to perform the actions.
Constructor Details
#initialize ⇒ MultiTouch
Create a new multi-action
77 78 79 |
# File 'lib/appium_lib/device/multi_touch.rb', line 77 def initialize @actions = [] end |
Class Method Details
.pinch(percentage = 25, auto_perform = true) ⇒ Object
Convenience method for pinching the screen. Places two fingers at the edges of the screen and brings them together. “‘ruby action = pinch 75 #=> Pinch the screen from the top right and bottom left corners action.perform #=> to 25% of its size. “`
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/appium_lib/device/multi_touch.rb', line 28 def pinch(percentage = 25, auto_perform = true) fail ArgumentError("Can't pinch to greater than screen size.") if percentage > 100 p = Float(percentage) / 100 i = 1 - p top = TouchAction.new top.swipe start_x: 1.0, start_y: 0.0, end_x: i, end_y: i, duration: 1 bottom = TouchAction.new bottom.swipe(start_x: 0.0, start_y: 1.0, end_x: p, end_y: p, duration: 1) pinch = MultiTouch.new pinch.add top pinch.add bottom return pinch unless auto_perform pinch.perform end |
.zoom(percentage = 200, auto_perform = true) ⇒ Object
Convenience method for zooming the screen. Places two fingers at the edges of the screen and brings them together. “‘ruby action = zoom 200 #=> Zoom in the screen from the center until it doubles in size. action.perform “`
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/appium_lib/device/multi_touch.rb', line 56 def zoom(percentage = 200, auto_perform = true) fail ArgumentError("Can't zoom to smaller then screen size.") if percentage < 100 p = 100 / Float(percentage) i = 1 - p top = TouchAction.new top.swipe start_x: i, start_y: i, end_x: 1, end_y: 1, duration: 1 bottom = TouchAction.new bottom.swipe start_x: p, start_y: p, end_x: 1, end_y: 1, duration: 1 zoom = MultiTouch.new zoom.add top zoom.add bottom return zoom unless auto_perform zoom.perform end |
Instance Method Details
#add(chain) ⇒ Object
Add a touch_action to be performed
83 84 85 |
# File 'lib/appium_lib/device/multi_touch.rb', line 83 def add(chain) @actions << chain.actions end |
#perform ⇒ Object
Ask Appium to perform the actions
88 89 90 |
# File 'lib/appium_lib/device/multi_touch.rb', line 88 def perform $driver.multi_touch @actions end |