selenium-webdriver - 在 Heroku 上使用 webdrivers selenium 获取 ReadTimeout

标签 selenium-webdriver heroku rspec capybara

在 heroku 上使用 selenium webdrivers 时出现以下错误。 (rspec-> capybara -> Selenium )

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

最佳答案

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

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

关于selenium-webdriver - 在 Heroku 上使用 webdrivers selenium 获取 ReadTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59723188/

相关文章:

rspec - Selenium::WebDriver::Error::JavascriptError:WAITING评估.js 加载失败 Firefox 23

ruby-on-rails - Bundler 不允许我安装 gems

java - Selenium 网络驱动程序(java): Drag And Drop issue

r - RSelenium 中的下拉框

java - 无法从 Booking.com 的搜索结果中获取价格

ruby-on-rails - 无法连接到 heroku 上的 redis

ruby-on-rails - Rails 如何测试一个方法接收 block 参数与 Rspec

selenium-webdriver - 测试输入字段是否获得焦点

linux - FileNotFoundError:[Errno 2]推送到heroku之后

ruby-on-rails - 如何在 Heroku 上刷新 Varnish 缓存