Ruby on Rails でseleniumを使ってみる
いきなり参照:
準備・ライブラリ
--
#テスト環境
gem 'rspec-rails'
gem 'capybara', '~> 2.4.3'
gem 'selenium-webdriver'
#テスト環境のデータベースの初期化
gem 'database_cleaner',
--
bundle install --path vendor/bundler
bundle exec rails generate spec:install
google chromeのドライバー
最新版
参照:https://sites.google.com/a/chromium.org/chromedriver/downloads
macなら、chromedriver_mac32.zipをダウンロード
chromedriverのパスを通す
usr/local/bin/(usr/bin)以下の入れて、パスを通す
参照:http://qiita.com/oh_rusty_nail/items/7c84197bbbf27fc7b1c0
ln -s chromedriver /usr/local/bin/chromedriver
RSPECとCapybaraの導入と使い方
まずはRSPECについておさらい。
http://www.oiax.jp/rails/rspec_capybara_primer/rspec_capybara_the_first_step.html
2.application.rbの設定
必要無いものは自動生成しない
config.generators do |g|
g.test_framework :rspec, :fixture => true
g.view_specs false
g.controller_specs false
g.helper_specs false
g.routing_specs false
g.request_specs false
end
********************
3.テストを実行コマンド
テストを作成してい実行おをおこなう
bundle exec rspec
※capybabaマッチャ
http://blog.enogineer.com/2014/10/30/rails-capybara-index/
********************
4.実際にSeleniumを起動する
http://qiita.com/shunhikita/items/d02cc313496e26bb69e1
5.データベースの初期化
起動時に
・データベースのクリア
・seed.rbを読み込み
トランザクション処理はRSPECまかせ(DatabaseCleanerは使わない)
config.use_transactional_fixtures = true
*DatabaseCleanerについて
*補足
RSpec.configure do |c|
c.before(:each) { } # 全てのテストスイート中のそれぞれのexampleの前に実行される
c.before(:all) { } # それぞれのトップレベルのグループの最初のexampleの前に実行される
c.before(:suite) { } # 全てのspecファイルがロードされたあと、最初のspecが実行される前に一度だけ実行される
end
http://nilp.hatenablog.com/entry/2014/05/28/003335
********************
【エラー対処】root_pathが通らない場合はspec_helper.rbに
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'capybara/rspec'
require 'capybara/rails'
include Capybara::DSL
と
RSpec.configure do |config|
config.include Rails.application.routes.url_helpers
end
を追加。
http://j-caw.co.jp/blog/?p=1388
【エラー対処】:cannot load such file
http://qiita.com/pugiemonn/items/55dd0a07c262c2010e2c
********************
--------------------------------------
実行方法
データベースをテスト環境へ
bundle exec db:test:prepare
bundle exec rspec
非表示の要素はデフォルト検出しない
見えない要素はでデフォルト検出しないので、findなどで、
visible: false
と指定する必要がある。