Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jooeycheng/f4d26d9f3154fcd357080a83169da03c to your computer and use it in GitHub Desktop.
Save jooeycheng/f4d26d9f3154fcd357080a83169da03c to your computer and use it in GitHub Desktop.
Capybara Poltergeist (PhantomJS) Cheatsheet
# Setup
# ./spec/spec_helper.rb
Capybara.register_driver :poltergeist do |app|
options = {
debug: true, # debug mode, verbose logs
timeout: 30,
window_size: [360, 640],
phantomjs_options: [
'--proxy-type=none',
'--load-images=no',
'--ssl-protocol=any',
# '--ignore-ssl-errors=yes',
# '--web-security=false',
# '--debug=true'
# 'js_errors=false'
]
}
Capybara::Poltergeist::Driver.new(app, options)
end
# - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Usage
# ./spec/example_spec.rb
# Create a session
page = Capybara::Session.new(:poltergeist)
# Capybara driver configuration
# These are defined by Poltergeist, not Capybara
# See https://github.com/teampoltergeist/poltergeist
page.driver.resize_window(360, 640) # Simulate size of phone
page.driver.add_headers('User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36')
page.driver.add_headers('Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3')
page.driver.add_headers('Accept-Language' => 'en-GB,en-US;q=0.9,en;q=0.8')
page.driver.network_traffic # get network events
# Capybara methods
page.visit(webview_url)
page.body # raw html body
page.save_screenshot('screenshot.png')
page.evaluate_script('javascript;')
# Find element
element = page.find(:xpath, '/path/to/element')
element = page.find(:css, 'div#element-id') # find single
element = page.all(:css, 'div.element-class') # find multiple
element.visible?
element.text
element.click
# Get/set input value
element.value
element.set('some-value')
element['disabled'] # use `[]` to fetch html attribute
# Trigger keyboard event on element
element.native.send_keys(%w[1 2 3 1 2 3]) # send keyboard events in order specified
element.native.send_keys(:enter)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment