Ruby on Rails でseleniumを使ってみる

Ruby on Rails でseleniumを使ってみる

いきなり参照:

Rubyで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について

http://linuxserver.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0/ruby/on-rails/database_cleaner

*補足

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

 

と指定する必要がある。

非表示要素はCapybaraのfindで検索対象になるのか

更新日:

Copyright© アルパカ@ラボ , 2024 All Rights Reserved Powered by AFFINGER5.