Class: Appium::Capybara::Driver

Inherits:
Capybara::Selenium::Driver
  • Object
show all
Defined in:
lib/appium_capybara/driver/appium/driver.rb

Overview

methods in this class either override selenium driver methods or they’re new and specific to appium.

Instance Method Summary collapse

Instance Method Details

#accept_modal(type, options = {}, &blk) ⇒ Object

override type and options are passed but can be ignored.

[View source]

66
67
68
# File 'lib/appium_capybara/driver/appium/driver.rb', line 66

def accept_modal(type, options = {}, &blk)
  appium_driver.alert_accept
end

#appium_driverObject

new

starts new driver

[View source]

9
10
11
12
13
14
# File 'lib/appium_capybara/driver/appium/driver.rb', line 9

def appium_driver
  # must use self to reference the 'browser' method
  browser unless @appium_driver

  @appium_driver
end

#browserObject

override

Creates and starts a new appium driver. To access the browser without creating one use @browser

[View source]

20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/appium_capybara/driver/appium/driver.rb', line 20

def browser
  return @browser if @browser

  @appium_driver = Appium::Driver.new @options, false
  # browser is the standard selenium driver without any appium methods
  @browser = @appium_driver.start_driver

  main = Process.pid
  at_exit do
    # Store the exit status of the test run since it goes away after calling the at_exit proc...
    @exit_status = $ERROR_INFO.status if $ERROR_INFO.is_a?(SystemExit)
    quit if Process.pid == main
    exit @exit_status if @exit_status # Force exit with stored status
  end
  @browser
end

#browser_initialized?Boolean

Deprecated.

This method is being removed

Returns:

  • (Boolean)
[View source]

54
55
56
# File 'lib/appium_capybara/driver/appium/driver.rb', line 54

def browser_initialized?
  !!@browser
end

#dismiss_modal(type, options = {}, &blk) ⇒ Object

override type and options are passed but can be ignored.

[View source]

60
61
62
# File 'lib/appium_capybara/driver/appium/driver.rb', line 60

def dismiss_modal(type, options = {}, &blk)
  appium_driver.alert_dismiss
end

#find_css(selector) ⇒ Object

override

[View source]

43
44
45
# File 'lib/appium_capybara/driver/appium/driver.rb', line 43

def find_css(selector)
  appium_driver.find_elements(:css, selector).map { |node| Appium::Capybara::Node.new(self, node) }
end

#find_custom(finder, locator) ⇒ Object

new

[View source]

113
114
115
# File 'lib/appium_capybara/driver/appium/driver.rb', line 113

def find_custom(finder, locator)
  appium_driver.find_elements(finder, locator).map { |node| Appium::Capybara::Node.new(self, node) }
end

#find_xpath(selector) ⇒ Object

override

[View source]

38
39
40
# File 'lib/appium_capybara/driver/appium/driver.rb', line 38

def find_xpath(selector)
  appium_driver.find_elements(:xpath, selector).map { |node| Appium::Capybara::Node.new(self, node) }
end

#quitObject

override

[View source]

118
119
120
121
122
123
124
125
# File 'lib/appium_capybara/driver/appium/driver.rb', line 118

def quit
  @appium_driver.driver_quit if @browser || @appium_driver
rescue Errno::ECONNREFUSED
  # Browser must have already gone
ensure
  @browser = nil
  @appium_driver = nil
end

#reset!Object

override

[View source]

48
49
50
51
# File 'lib/appium_capybara/driver/appium/driver.rb', line 48

def reset!
  # Re-create a new session.
  @appium_driver&.restart
end

#rotate(opts) ⇒ Object

new Use :landscape or :portrait

[View source]

102
103
104
# File 'lib/appium_capybara/driver/appium/driver.rb', line 102

def rotate(opts)
  browser.rotate opts
end

#save_screenshot(path, options = {}) ⇒ Object

override Capybara always passes an options param but appium_lib can’t do anything with it.

[View source]

108
109
110
# File 'lib/appium_capybara/driver/appium/driver.rb', line 108

def save_screenshot(path, options = {})
  appium_driver.screenshot path if @appium_driver
end

#scroll_downObject

new

[View source]

76
77
78
# File 'lib/appium_capybara/driver/appium/driver.rb', line 76

def scroll_down
  browser.execute_script('mobile: scroll', direction: 'down')
end

#scroll_upObject

new

[View source]

71
72
73
# File 'lib/appium_capybara/driver/appium/driver.rb', line 71

def scroll_up
  browser.execute_script('mobile: scroll', direction: 'up')
end

#swipe(opts) ⇒ Object

new

[View source]

81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/appium_capybara/driver/appium/driver.rb', line 81

def swipe(opts)
  start_x = opts.fetch :start_x, 0
  start_y = opts.fetch :start_y, 0
  end_x   = opts.fetch :end_x, 0
  end_y   = opts.fetch :end_y, 0
  duration = opts.fetch :duration, 200

  action_builder = browser.action
  input = action_builder.pointer_inputs[0]
  action_builder
    .move_to_location(start_x, start_y)
    .pointer_down(:left)
    .pause(device: input, duration: duration / 1000)
    .move_to_location(end_x, end_y)
    .pause(device: input, duration: 1)
    .release
    .perform
end