capybaraのseleniumドライバをGoogle Chromeで動かす

Capybaraとseleniumドライバでテストをしていると、エミュレータとして起動するFirefoxブラウザの表示領域の外側にあるリンクやボタンのクリックができないという問題がある。

capybara + seleniumドライバで画面外のクリックが動作しない問題

 

sleniumドライバから使用するブラウザをChromeに変更することで、この問題は解決した。

GitHub capybaraのConfiguring and adding driversに書いてあった。。)

seleniumから使うブラウザをChromeに変更する

手順は多くない。

Capybara.register_driverを設定する

test_helper.rbに次の記述を追加。

この状態でrake test:integrationを実行しても、まだエラーがでる。

Selenium::WebDriver::Error::WebDriverError: Unable to find the chromedriver executable. Please download the server from http://code.google.com/p/chromedriver/downloads/list and place it somewhere on your PAT
H. More info at http://code.google.com/p/selenium/wiki/ChromeDriver.

chromedriverをインストール

ここから自分のOSに適切なドライバをダウンロード・展開し、chromedriver.exeを環境変数が通っている場所に移動する。(その他詳細はこちら

注意点として、カレントディレクトリはパスが通ってるだろという考えでrailsプロジェクト直下にchromedriver.exeを入れても、そのフォルダ自体にパスが通っていないと、やはり動作しない。

もうちゃんと動作する

上記2点の手順をするだけで、rake test:integration時に使用されるブラウザが、FirefoxではなくGoogle Chromeになる。(seleniumドライバ使ってる場合の話だね)

ブラウザの表示領域外のボタンやリンクもちゃんとクリックしてくれるし、なんだか動作も速くテスト実行時間が若干短縮できるから、Chromeに切り替えない理由は無いと思う。

コメントを残す

トラックバック: http://pgnote.net/wp-trackback.php?p=2079