selenium-webdriver - 在 Heroku 上使用 webdrivers selenium 获取 ReadTimeout
问题描述
在 heroku 上使用 selenium webdrivers 时出现以下错误。(rspec->水豚->硒)
Net::ReadTimeout: Net::ReadTimeout with #<TCPSocket:(closed)>
我有heroku-buildpack-google-chrome
带有 webdrivers-gem 的 buildpack。
并在规范设置中有以下块:
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
解决方案
如果在您的应用程序第一次请求期间发生超时,而应用程序一次执行某些操作(编译资产等),那么您可能需要增加允许的读取超时
Capybara.register_driver :selenium do |app|
Capybara::Selenium::Driver.new(
...
timeout: 60 # defaults to 30 IIRC
)
end
推荐阅读
- github - 在 GitHub Codespaces 上运行的 Apollo Server 中的“预检响应不成功”
- php - PHP 条件内存根据调用的 URL 增加(drupal 8)
- bash - 如何将当前 git 分支添加到现有的 bash 提示符
- c++ - 为什么模板函数中的 strcmp() 返回不同的值?
- sql-server - 如何在同时调用多次的存储过程中读取更新的数据
- excel - Excel - 希望使用 VBA 来构建包含复制额外单元格的目录
- java - 如何获取具有父 DataLakeDirectoryClient 类实例的子文件/目录列表
- java - “java.lang.NullPointerException:无法调用“java.sql.Connection.prepareStatement(String)”,因为“this.con”为空”
- c# - 为什么分配异步等待事件处理程序不会导致任何问题?
- python - pytest 参数化一个自动使用的夹具