class Wayfarer::HTTPAdapters::SeleniumAdapter

An adapter for Selenium WebDrivers @api private

Attributes

driver[R]

@!attribute [r] driver @return [URI] the Selenium WebDriver.

Public Class Methods

new(config = Wayfarer.config) click to toggle source
# File lib/wayfarer/http_adapters/selenium_adapter.rb, line 16
def initialize(config = Wayfarer.config)
  @config = config
end

Public Instance Methods

browser() click to toggle source

A Capybara driver that wraps the {#driver}. @see github.com/teamcapybara/capybara Capybara

# File lib/wayfarer/http_adapters/selenium_adapter.rb, line 52
def browser
  @browser ||= instantiate_capybara_driver
end
fetch(uri) click to toggle source

Fetches a page. @return [Page]

# File lib/wayfarer/http_adapters/selenium_adapter.rb, line 22
def fetch(uri)
  driver.navigate.to(uri)

  Page.new(
    uri: @driver.current_url,
    status_code: @driver.response_code,
    body: @driver.page_source,
    headers: @driver.response_headers
  )
end
free() click to toggle source

Quits the browser.

# File lib/wayfarer/http_adapters/selenium_adapter.rb, line 40
def free
  @driver&.quit
  @driver = nil
end
reload!() click to toggle source

Closes the driver.

# File lib/wayfarer/http_adapters/selenium_adapter.rb, line 34
def reload!
  @driver&.close
  @driver = nil
end

Private Instance Methods

instantiate_capybara_driver() click to toggle source
# File lib/wayfarer/http_adapters/selenium_adapter.rb, line 66
def instantiate_capybara_driver
  Capybara.run_server = false
  Capybara.current_driver = :selenium

  capybara_driver = Capybara::Selenium::Driver.new(nil)
  capybara_driver.instance_variable_set(:@browser, driver)

  session = Capybara::Session.new(:selenium, nil)
  session.instance_variable_set(:@driver, capybara_driver)

  session
end
instantiate_driver() click to toggle source
# File lib/wayfarer/http_adapters/selenium_adapter.rb, line 58
def instantiate_driver
  driver = Selenium::WebDriver.for(*@config.selenium_argv)
  driver.manage.window.size = Selenium::WebDriver::Dimension.new(
    *@config.window_size
  )
  driver
end