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.



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

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

#appium_driverObject

new

starts new driver



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
  self.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



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
  unless @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 = $!.status if $!.is_a?(SystemExit)
      quit if Process.pid == main
      exit @exit_status if @exit_status # Force exit with stored status
    end
  end
  @browser
end

#browser_initialized?Boolean

Deprecated.

This method is being removed

Returns:

  • (Boolean)


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

def browser_initialized?
  !! @browser
end

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

override type and options are passed but can be ignored.



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

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

#find_css(selector) ⇒ Object

override



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



94
95
96
# File 'lib/appium_capybara/driver/appium/driver.rb', line 94

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



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



99
100
101
102
103
104
105
106
# File 'lib/appium_capybara/driver/appium/driver.rb', line 99

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



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

def reset!
  # invoking the browser method after the browser has closed will cause it to relaunch
  # use @appium_driver to avoid the relaunch.
  @appium_driver.reset if @appium_driver
end

#rotate(opts) ⇒ Object

new Use :landscape or :portrait



83
84
85
# File 'lib/appium_capybara/driver/appium/driver.rb', line 83

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.



89
90
91
# File 'lib/appium_capybara/driver/appium/driver.rb', line 89

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

#scroll_downObject

new



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

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

#scroll_upObject

new



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

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