Posted at

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ライセンスです。