Skip to content

Instantly share code, notes, and snippets.

@schneems
Created December 27, 2018 16:38
Show Gist options
  • Select an option

  • Save schneems/40a5497d845c013f64e7db718fbffb52 to your computer and use it in GitHub Desktop.

Select an option

Save schneems/40a5497d845c013f64e7db718fbffb52 to your computer and use it in GitHub Desktop.

Revisions

  1. schneems revised this gist Dec 27, 2018. 1 changed file with 0 additions and 3 deletions.
    3 changes: 0 additions & 3 deletions capybara.rb
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,3 @@
    require 'capybara'
    require 'capybara/dsl'

    require 'capybara'

    Capybara.register_driver :selenium_chrome_headless_no_scroll do |app|
  2. schneems created this gist Dec 27, 2018.
    81 changes: 81 additions & 0 deletions capybara.rb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,81 @@
    require 'capybara'
    require 'capybara/dsl'

    require 'capybara'

    Capybara.register_driver :selenium_chrome_headless_no_scroll do |app|
    Capybara::Selenium::Driver.load_selenium
    browser_options = ::Selenium::WebDriver::Chrome::Options.new
    browser_options.args << '--headless'
    browser_options.args << '--disable-gpu' if Gem.win_platform?
    browser_options.args << '--hide-scrollbars'

    Capybara::Selenium::Driver.new(app, browser: :chrome, options: browser_options)
    end

    module Rundoc
    class CodeCommand
    class Website
    end
    end
    end

    class Rundoc::CodeCommand::Website
    class Driver
    def self.tasks
    @tasks
    end

    @tasks = {}
    def self.add(name, value)
    raise "Task named #{name.inspect} is already started, choose a different name" if @tasks[name]
    @tasks[name] = value
    end

    def self.find(name)
    raise "Could not find task with name #{name.inspect}, known task names: #{@tasks.keys.inspect}" unless @tasks[name]
    @tasks[name]
    end

    def self.next_screenshot_name
    @count ||= 0
    @count += 1
    "screenshot_#{@count}.png"
    end

    attr_reader :session

    def initialize(name: "name", url: )
    @session = Capybara::Session.new(:selenium_chrome_headless_no_scroll)
    end

    def visit(url)
    @session.visit(url)
    end

    def screenshot
    filename = "tmp/#{self.class.next_screenshot_name}"
    session.save_screenshot(filename)
    filename
    end

    def current_url
    session.current_url
    end

    def scroll(value = 100)
    session.execute_script "window.scrollBy(0,#{value})"
    end

    def teardown
    session.reset_session!
    end
    end
    end


    url = "https://www.google.com"
    driver2 = Rundoc::CodeCommand::Website::Driver.new(name: "google", url: url)
    driver2.visit(url)

    driver2.screenshot