Ruby
Capybara
poltergeist
capybara-webkit
selenium-webdriver

CapybaraでSeleniumとヘッドレスブラウザの切り替えを簡単にするコード

More than 3 years have passed since last update.

概要

ブラウザの自動操作でヘッドレスならデバッグが大変だし、
Seleniumからブラウザを操作すると遅いって方のために、
Capybaraを使っていたら開発時Selenium、使用時ヘッドレスに変更しやすいですよってお伝えするためのコードを書きました。
コードを見てどこを書き変えるのか確認していただければと思います。

仕様

コマンドラインの実行時に指定したドライバでCapybaraを使う。
使えるオプションは以下。

  • selenium
  • webkit
  • poltergeist
  • selenium_firefox
  • selenium_chrome

使い方

driverとして与えた引数のドライバで動作する。

$ ruby capybara-drivers.rb --driver webkit

実装

capyabra-drivers.rb
#! /uer/bin/env ruby

require 'capybara'
require 'selenium-webdriver'
require 'capybara-webkit'
require 'capybara/poltergeist'

require 'optparse'

opt = OptionParser.new
OPTS = {}
opt.on('--driver ',
       ['selenium','webkit','poltergeist','selenium_firefox','selenium_chrome'],
       'selenium | webkit | poltergeist | selenium_firefox | selenium_chrome') {|v| OPTS[:driver] = v }
opt.parse(ARGV)

browser = nil
case OPTS[:driver]
when 'selenium' then
  browser = Capybara::Session.new(:selenium)

when 'webkit' then
  browser = Capybara::Session.new(:webkit)

when 'poltergeist' then
  browser = Capybara::Session.new(:poltergeist)

when 'selenium_firefox' then
  Capybara.register_driver :selenium_firefox do |app|
    Capybara::Selenium::Driver.new(app, :browser => :firefox)
  end
  browser = Capybara::Session.new(:selenium_firefox)

when 'selenium_chrome' then
  Capybara.register_driver :selenium_chrome do |app|
    Capybara::Selenium::Driver.new(app, :browser => :chrome)
  end
  browser = Capybara::Session.new(:selenium_chrome)

else
  browser = Capybara::Session.new(:selenium)
end

browser.visit 'http://qiita.com/'
browser.save_screenshot 'screenshot.png'
Gemfile
source 'https://rubygems.org'

gem 'capybara'
gem 'selenium-webdriver'
gem 'capybara-webkit'
gem 'poltergeist'

あとがき

コードってここを書き変えるだけで簡単に動くんですよって言われても導入が面倒だって言われそう。
導入には触れずに動作させるためのコードだけ書きました。

ライセンス

こちらのコードはMITライセンスです。