class Selenium::WebDriver::TouchScreen

Constants

FLICK_SPEED

Public Class Methods

new(bridge) click to toggle source

@api private

# File lib/selenium/webdriver/common/touch_screen.rb, line 28
def initialize(bridge)
  @bridge = bridge
end

Public Instance Methods

double_tap(element) click to toggle source
# File lib/selenium/webdriver/common/touch_screen.rb, line 37
def double_tap(element)
  assert_element element
  @bridge.touch_double_tap element.ref
end
down(x, y = nil) click to toggle source
# File lib/selenium/webdriver/common/touch_screen.rb, line 47
def down(x, y = nil)
  x, y = coords_from x, y
  @bridge.touch_down x, y
end
flick(*args) click to toggle source
# File lib/selenium/webdriver/common/touch_screen.rb, line 76
def flick(*args)
  case args.size
  when 2
    x_speed, y_speed = args
    @bridge.touch_flick Integer(x_speed), Integer(y_speed)
  when 4
    element, xoffset, yoffset, speed = args

    assert_element element

    if (speed.is_a?(String) || speed.is_a?(Symbol)) && FLICK_SPEED.key?(speed.to_sym)
      WebDriver.logger.deprecate "Passing #{speed.inspect} speed",
                                 "Integer or Selenium::WebDriver::TouchScreen::FLICK_SPEED[:#{speed}]"
      speed = FLICK_SPEED[speed.to_sym]
    end

    @bridge.touch_element_flick element.ref, Integer(xoffset), Integer(yoffset), Integer(speed)
  else
    raise ArgumentError, "wrong number of arguments, expected 2 or 4, got #{args.size}"
  end
end
long_press(element) click to toggle source
# File lib/selenium/webdriver/common/touch_screen.rb, line 42
def long_press(element)
  assert_element element
  @bridge.touch_long_press element.ref
end
move(x, y = nil) click to toggle source
# File lib/selenium/webdriver/common/touch_screen.rb, line 57
def move(x, y = nil)
  x, y = coords_from x, y
  @bridge.touch_move x, y
end
scroll(*args) click to toggle source
# File lib/selenium/webdriver/common/touch_screen.rb, line 62
def scroll(*args)
  case args.size
  when 2
    x_offset, y_offset = args
    @bridge.touch_scroll nil, Integer(x_offset), Integer(y_offset)
  when 3
    element, x_offset, y_offset = args
    assert_element element
    @bridge.touch_scroll element.ref, Integer(x_offset), Integer(y_offset)
  else
    raise ArgumentError, "wrong number of arguments, expected 2..3, got #{args.size}"
  end
end
single_tap(element) click to toggle source
# File lib/selenium/webdriver/common/touch_screen.rb, line 32
def single_tap(element)
  assert_element element
  @bridge.touch_single_tap element.ref
end
up(x, y = nil) click to toggle source
# File lib/selenium/webdriver/common/touch_screen.rb, line 52
def up(x, y = nil)
  x, y = coords_from x, y
  @bridge.touch_up x, y
end

Private Instance Methods

assert_element(element) click to toggle source
# File lib/selenium/webdriver/common/touch_screen.rb, line 115
def assert_element(element)
  return if element.is_a? Element

  raise TypeError, "expected #{Element}, got #{element.inspect}:#{element.class}"
end
coords_from(x, y) click to toggle source
# File lib/selenium/webdriver/common/touch_screen.rb, line 100
def coords_from(x, y)
  if y.nil?
    point = x

    unless point.respond_to?(:x) && point.respond_to?(:y)
      raise ArgumentError, "expected #{point.inspect} to respond to :x and :y"
    end

    x = point.x
    y = point.y
  end

  [Integer(x), Integer(y)]
end