0

私はcapybaraにgoogle chromeを使用する方法を理解しようと2日以上を過ごしましたが、運はありません:(フォームボタンをテストしようとしています。 Firefoxをインストールするには、私が検索した限り、私はchromeを使いたいと思っていますが、firefoxをコンピュータにインストールしてからchromeをデフォルトにしておく必要があります(私が間違っていれば修正してください)。 Firefoxの開口部を保持するタイミングエラーとあまりにも長い間閉じが、私はここまで来たていますカピバラ用のクロームを使用する、レール4.2

マイ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は#新しい"

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?":

障害私はアプリのどこにでも持っていません。

私のテストファイルは機能フォルダ内にあります。追加する

:type => feature

(私はそれが何であるかわからない)私のテストには何も変わりません。

visit '/clearance_batches/new' without js: true

このテストでは、エラーが発生していないので、ルートは正しいです。私は可能な限り具体的にしようとしました。助けてくれてありがとう。

答えて

0

register_serverに渡されたブロックは、Capybara :: Driver :: Baseインスタンス(Capybara :: Selenium :: Driverが派生したもの)を返す必要があります。インスタンスを作成した後にdriver_pathを設定すると、ブロックは実際に文字列を返します。あなたがしようとしている場合のいずれかのブロックの外に設定するか、

Capybara.register_driver :selenium_chrome do |app| 
    Selenium::WebDriver::Chrome.driver_path = '/Users/erincemer/Downloads/chromedriver' 
    Capybara::Selenium::Driver.new(app, browser: :chrome) 
end 

を抱えている問題を解決しますregister_driverブロック内2行の順序を入れ替えるChrome.driver_pathを移動すると、あなたは、Firefoxをインストールする必要はありませんクロムを使用してください。 Firefox 48+を使用しようとすると、geckodriverをインストールする必要があります。 `失敗/エラー: 不明なエラー:クローム今すぐ をbinary`見つけることができない、14バックトレース セレン:: webdriverを::エラー::ないUnknownErrorから一致する行を見つけることができません

+0

おかげで、両方の提案は、私にこの障害を与えました21のテストのうちの失敗は失敗しています。 –

+0

@EricdeSouzaこれは別の問題で、Chromeのような音があなたのPATHにありません –

+0

「Chrome」と言うと、私が既にインストールしたGoogle Chromeまたはchromdriverを意味するのでしょうか?そして、どのように私のパスにクロムを追加するのですか? –

関連する問題