首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Heroku上使用webdrivers selenium获取ReadTimeout

在Heroku上使用webdrivers selenium获取ReadTimeout
EN

Stack Overflow用户
提问于 2020-01-14 03:46:39
回答 2查看 582关注 0票数 5

在heroku上使用selenium webdrivers时,我得到了以下错误。(rspec->水豚->硒)

代码语言:javascript
复制
Net::ReadTimeout: Net::ReadTimeout with #<TCPSocket:(closed)>

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

并在等级库设置中设置以下块:

代码语言:javascript
复制
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

https://gist.github.com/IanVaughan/3e0c50d2fa4a60e672b96f6726fbbb8c此处提供了Webdrivers.logger.level = :DEBUG输出

代码语言:javascript
复制
capybara (3.30.0)
webdrivers (4.2.0)
selenium-webdriver (3.142.7)

全栈跟踪:https://gist.github.com/IanVaughan/09b31613833d965ee4f3b7d1e48fd1e2

我运行的规范是:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2020-01-16 05:25:57

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

代码语言:javascript
复制
Capybara.register_driver :selenium do |app|
    Capybara::Selenium::Driver.new(
      ...
      timeout: 60 # defaults to 30 IIRC
    )
end
票数 1
EN

Stack Overflow用户

发布于 2020-01-24 21:00:38

在无头模式下,cookie可能会在30秒后被清除

在chrome选项中添加此选项,并尝试它是否有效:)

代码语言:javascript
复制
--enable-features=NetworkService,NetworkServiceInProcess
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59723188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档