簡體   English   中英

將鉻用於水豚,護欄4.2

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM