0

我on Rails的3.2使用Chromedriver 2.30.477691與谷歌鉻-β60.0.3112.50-1與硒的webdriver 3.4.3後,關閉鉻,我的問題是,只有第一個集成測試傳球和那麼瀏覽器會關閉,所有其他集成測試無論是否在同一個rspec文件或單獨的文件中都會失敗。chromedriver初試

如果我運行任何單個測試重點然後將其傳遞。我試過了,沒有無頭的選項,這沒有什麼區別,在第一次測試之後,我可以看到瀏覽器已關閉,並且不會爲未來的測試重新打開。

這些測試使用Firefox的運行,所以我知道測試運行良好。

這是我在rails_helper.rb

Capybara.register_driver(:headless_chrome) do |app| 
    caps = Selenium::WebDriver::Remote::Capabilities.chrome(
     chromeOptions: { 
     binary: "/opt/google/chrome-beta/google-chrome", 
     args: %w[headless disable-gpu] 
     } 
    ) 
    Capybara::Selenium::Driver.new(
     app, 
     browser: :chrome, 
     desired_capabilities: caps 
    ) 
    end 

    Capybara.current_driver =:headless_chrome 
    Capybara.javascript_driver = :headless_chrome 

我的測試,如果它不是序列中的第一個測試,一個失敗的例子設置。

require "rails_helper" 

RSpec.describe "Account Index Page Tests", :type => :feature do 

    before :each do 
     admin_sign_in 
    end 

    it "Ensure that the index contains one of the default accounts" do 
     visit "/#/accounts" 

     expect(find_by_id("heading")).to have_text("Account") 
     expect(find_by_id("new-btn")).to have_text("New") 
     expect(find_by_id("name0")).to have_text("Sales") 
    end 
end 

運行上述測試作爲第二個測試後,我得到錯誤這個錯誤。如果我按照相反的順序運行它,則另一個測試將失敗,而不是index_accounts。

% rspec spec/integration/accounts/create_accounts_spec.rb spec/integration/accounts/index_accounts_spec.rb 

Randomized with seed 30251 
.F 

Failures: 

    1) Account Index Page Tests Ensure that the index contains one of the default accounts 
    Failure/Error: fill_in "Email", with: "[email protected]u" 

    Capybara::ElementNotFound: 
     Unable to find field "Email" 
    # ./spec/integration_helpers/login_helper.rb:43:in `admin_sign_in' 
    # ./spec/integration/accounts/index_accounts_spec.rb:7:in `block (2 levels) in <top (required)>' 

Finished in 5.57 seconds (files took 6.2 seconds to load) 
2 examples, 1 failure 

Failed examples: 

rspec ./spec/integration/accounts/index_accounts_spec.rb:10 # Account Index Page Tests Ensure that the index contains one of the default accounts 
+1

我震驚的是,硒的webdriver 2.53.4甚至還可以與最新的Chrome和chromedriver一個測試 - 升級到最新的硒的webdriver。留在硒2.53.4的唯一原因是如果你需要測試傳統的Firefox版本。 –

+0

剛升級到selenium-webdriver 3.4.3,完全一樣的問題。 – map7

+0

將水豚升級至2.14.4 – map7

回答

1

假設你使用的是與水豚默認配置的RSpec是塊設置驅動器的基於測試的元數據使用前安裝了一個,和塊之後,司機重置Capybara.default_driver - https://github.com/teamcapybara/capybara/blob/master/lib/capybara/rspec.rb#L20

你的問題是,你已經設置Capybara.current_driver,而不是設置Capybara.default_driver。這意味着您的第二個和更多測試將被重置爲使用默認rack_test驅動程序(因爲您沒有用於在測試中分配不同驅動程序的元數據)。如果你只是希望所有的測試默認使用:headless_chrome驅動程序,而無需擔心數據改變

Capybara.current_driver = :headless_chrome 
Capybara.javascript_driver = :headless_chrome 

Capybara.default_driver = :headless_chrome 
Capybara.javascript_driver = :headless_chrome 

current_driver的設置將前後塊後,前面提到的被處理。