1. ko30005

    Posted

    ko30005
Changes in title
+RailsにCapybara + Seleniumを導入してChrome Headlessモードで実行
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,54 @@
+
+## 手順
+- `Gemfile`に以下を追加
+```
+gem 'capybara'
+gem 'selenium-webdriver'
+gem 'chromedriver-helper'
+```
+- `bundle install`
+- `spec_helper`に以下を追加
+
+```
+require 'selenium-webdriver'
+require 'capybara/rspec'
+
+Capybara.configure do |capybara_config|
+ capybara_config.default_driver = :selenium_chrome
+ capybara_config.default_max_wait_time = 10 # seconds
+end
+Capybara.register_driver :selenium_chrome do |app|
+ options = Selenium::WebDriver::Chrome::Options.new
+ options.add_argument('headless')
+ options.add_argument('--disable-gpu')
+ Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
+end
+
+Capybara.javascript_driver = :selenium_chrome
+```
+- これでheadlessモードで実行できます
+- headlessモードで実行する場合もし以下のエラーが出た場合は
+
+```
+WARN Selenium [DEPRECATION] :args or :switches is deprecated. Use Selenium::WebDriver::Chrome::Options#add_argument instead.
+```
+- 先ほど記述した`spec_helper`の
+`Capybara.register_driver :selenium_chrome`ブロック内に以下を追加することで解消します
+```
+options = Selenium::WebDriver::Chrome::Options.new
+ options.add_argument('headless')
+ options.add_argument('--disable-gpu')
+```
+
+- ※Chrome 59以上でないとheadlessモードは実行できません。。。
+
+## chromedriverの更新方法
+- 下記ディレクトリを削除します 
+ - `$HOME/.chromedriver-helper`
+- その後`run chromedriver-update`実行で更新できます。
+- ※ Gemfile で`chromedriver-helper` を入れている場合は
+ - `bundle exec chromedriver-update`
+
+## 参照
+https://github.com/teamcapybara/capybara#selenium
+https://github.com/SeleniumHQ/selenium/wiki/Ruby-Bindings