[英]Using chrome for capybara, rails 4.2
我花了兩天多的時間試圖弄清楚如何使用Google chrome來顯示水豚但沒有運氣:(試圖測試表單按鈕。具有js:true的測試失敗了。我確實安裝了firefox,因為據我搜索,雖然我想使用chrome,但我需要在計算機上安裝Firefox,然后將chrome設置為默認值。(如果我輸入錯了,請更正我)我還安裝了chromedriver。很長一段時間,但我走了這么遠:
我的rails_helper:
ENV["RAILS_ENV"] ||= 'test'
require 'spec_helper'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'capybara/rails'
require 'capybara'
require 'capybara/dsl'
require "selenium-webdriver"
require 'rails_helper'
ActiveRecord::Migration.maintain_test_schema!
Capybara.register_driver :selenium_chrome do |app|
Capybara::Selenium::Driver.new(app, browser: :chrome)
Selenium::WebDriver::Chrome.driver_path = '/Users/erincemer/Downloads/chromedriver'
end
(this is where I have chromedriver)
Capybara.javascript_driver = :selenium_chrome
RSpec.configure do |config|
config.include CsvHelper
config.include Capybara::DSL
config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.use_transactional_fixtures = false
config.infer_spec_type_from_file_location!
config.before(:suite) do
DatabaseCleaner.clean_with(:truncation)
end
config.before(:each) do
DatabaseCleaner.strategy = :transaction
end
config.before(:each, js: true) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
end
我的測試是:
描述“訪問clearance_batches#new”
it 'should get an error message when tries to find an item with empty string', js: true do
visit '/clearance_batches/new'
fill_in 'id_field', with: ""
click_button 'find item'
expect(page).to have_content('*Id can not be blank!')
end
end
我的失敗是:
失敗:
1) visit clearance_batches#new should get an error message when tries to find an item with empty string
Failure/Error: visit '/clearance_batches/new'
NoMethodError:
undefined method `needs_server?' for "/Users/erincemer/Downloads/chromedriver":String
我不知道哪里“ needs_server?” 來自,我在應用程序中的任何地方都沒有它。
我的測試文件位於features文件夾中。 添加
:type =>功能
(我不知道這是為了什么)對我的測試沒有任何改變。 我還有另一項測試
在沒有js的情況下訪問'/ clearance_batches / new':是
並且不會出現任何錯誤,因此路由正確。 我試圖盡可能具體。 謝謝你的幫助。
傳遞給register_server
的塊需要返回Capybara :: Driver :: Base實例(Capybara :: Selenium :: Driver派生自該實例)。 通過在創建實例后設置driver_path
,您的塊實際上正在返回一個字符串。 將Chrome.driver_path
設置移出該塊或交換register_driver
塊中兩行的順序將解決您遇到的問題
Capybara.register_driver :selenium_chrome do |app|
Selenium::WebDriver::Chrome.driver_path = '/Users/erincemer/Downloads/chromedriver'
Capybara::Selenium::Driver.new(app, browser: :chrome)
end
如果要使用Chrome,則無需安裝Firefox,只需安裝chromedriver。 如果嘗試使用Firefox 48+,則需要安裝geckodriver。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.