LoginSignup
18
18

More than 5 years have passed since last update.

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

Posted at

概要

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

18
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
18