问题因重复而结束:
我有一个Heroku应用程序运行构建包:
https://github.com/heroku/heroku-buildpack-google-chrome/
和
https://github.com/heroku/heroku-buildpack-chromedriver
我的设置与在chrome buidlpack上描述的相同:
chrome_bin = ENV.fetch('GOOGLE_CHROME_SHIM', nil)
chrome_opts = chrome_bin ? { "chromeOptions" => { "binary" => chrome_bin } } : {}
Capybara.register_driver :chrome do |app|
Capybara::Selenium::Driver.new(
app,
browser: :chrome,
desired_capabilities: Selenium::WebDriver::Remote::Capabilities.chrome(chrome_opts)
)
end
Capybara.javascript_driver = :chrome
session = Capybara::Session.new(:chrome)
session我在用宝石
gem "selenium-webdriver“
在谷歌Chrome在2020年9月升级到85版之前,这一切都非常顺利。现在它大约成功了5次中的1次,其余4次我得到了这样的错误:
2021-02-07T12:43:42.670067+00:00 app[worker.1]: 4 TID-1uto WARN: Selenium::WebDriver::Error::UnknownError: unknown error: session deleted because of page crash
2021-02-07T12:43:42.670068+00:00 app[worker.1]: from unknown error: cannot determine loading status
2021-02-07T12:43:42.670069+00:00 app[worker.1]: from tab crashed
2021-02-07T12:43:42.670070+00:00 app[worker.1]: (Session info: headless chrome=88.0.4324.150)
2021-02-07T12:43:42.670150+00:00 app[worker.1]: 4 TID-1uto WARN: #0 0x55e07c1cf199 <unknown>
2021-02-07T12:43:42.670151+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/response.rb:72:in `assert_ok'
2021-02-07T12:43:42.670152+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/response.rb:34:in `initialize'
2021-02-07T12:43:42.670152+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/common.rb:88:in `new'
2021-02-07T12:43:42.670153+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/common.rb:88:in `create_response'
2021-02-07T12:43:42.670153+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/default.rb:114:in `request'
2021-02-07T12:43:42.670153+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/common.rb:64:in `call'
2021-02-07T12:43:42.670154+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/bridge.rb:167:in `execute'
2021-02-07T12:43:42.670154+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/w3c/bridge.rb:567:in `execute'
2021-02-07T12:43:42.670155+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/w3c/bridge.rb:220:in `set_window_rect'
2021-02-07T12:43:42.670155+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/w3c/bridge.rb:183:in `resize_window'
2021-02-07T12:43:42.670156+00:00 app[worker.1]: /app/vendor/bundle/ruby/2.7.0/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/common/window.rb:123:in `resize_to'我尝试过向chrome添加额外的参数(即使buildpack自动添加它们),但没有效果。
我补充了有关这个解决方案的两个论点:
未知错误:会话因页崩溃而被删除,从未知错误:无法确定加载状态从选项卡崩溃与ChromeDriver硒
问题依然存在。
chrome_opts = { "chromeOptions" => { "binary" => chrome_bin#,
args: %w[headless disable-gpu no-sandbox disable-dev-shm-usage]
} }但还是没有运气。
所以我的问题是:
How do I tell the buildpack to stick to chrome version 84? or
How do I avoid the error from happening on version 85 and above?谢谢
发布于 2021-02-07 14:13:36
Capybara.register_driver :chrome do |app|
Capybara::Selenium::Driver.new app, browser: :chrome,
options: Selenium::WebDriver::Chrome::Options.new(args: %w[headless disable-gpu disable-dev-shm-usage])
end
Capybara.javascript_driver = :chrome这让它起作用了。
https://stackoverflow.com/questions/66088221
复制相似问题