在Heroku上使用webdrivers硒获取ReadTimeout

在heroku上使用Selenium Webdrivers时出现以下错误。 (rspec->水豚->硒)

Net::ReadTimeout: Net::ReadTimeout with #<TCPSocket:(closed)>

我有heroku-buildpack-google-chrome buildpack,带有webdrivers-gem。

在规范设置中包含以下内容:

chrome_shim = ENV.fetch("GOOGLE_CHROME_SHIM",nil)

Selenium::WebDriver::Chrome.path = chrome_shim

chrome_opts = { "chromeOptions" => { "binary" => chrome_shim } }

Capybara.register_driver :selenium do |app|
    Capybara::Selenium::Driver.new(
      app,browser: :chrome,desired_capabilities: Selenium::WebDriver::Remote::Capabilities.chrome(chrome_opts)
    )
end

Capybara.javascript_driver = :headless_chrome

Webdrivers.logger.level = :DEBUG输出在这里https://gist.github.com/IanVaughan/3e0c50d2fa4a60e672b96f6726fbbb8c

capybara (3.30.0)
webdrivers (4.2.0)
selenium-webdriver (3.142.7)

完整堆栈跟踪:https://gist.github.com/IanVaughan/09b31613833d965ee4f3b7d1e48fd1e2

我正在运行的规范是:

RSpec.feature 'User signup flow',:js do
  scenario 'Visits home page to signup' do
    visit root_path
    new_window = window_opened_by { click_link 'Sign Up',match: :first }
    within_window new_window do
      expect(page).to have_text('New Enquiry',wait: 5)
    end
  end
zzzzzadsddsazzzqq 回答:在Heroku上使用webdrivers硒获取ReadTimeout

如果在您的应用程序首次请求期间发生超时,而应用程序一次性执行某项操作(编译资产等),那么您可能需要增加允许的读取超时时间

Capybara.register_driver :selenium do |app|
    Capybara::Selenium::Driver.new(
      ...
      timeout: 60 # defaults to 30 IIRC
    )
end
,

很可能在无头模式下30秒钟后清除了Cookie

在chrome选项中添加它,然后尝试是否可行:)

--enable-features=NetworkService,NetworkServiceInProcess
本文链接:https://www.f2er.com/2775591.html

大家都在问