概要
ブラウザの自動操作でヘッドレスならデバッグが大変だし、
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ライセンスです。