在Mac上使用Ruby Watir和Chrome 76及更新版本打开Chrome

在Mac上使用Ruby Watir和Chrome 76及更新版本打开Chrome,ruby,google-chrome,selenium-chromedriver,watir,Ruby,Google Chrome,Selenium Chromedriver,Watir,我有两个驱动Chrome浏览器的ruby脚本。我正在使用Chrome75使用这个代码 caps = Selenium::WebDriver::Remote::Capabilities.chrome caps[:chrome_options] = {detach: true} browser = Watir::Browser.new :chrome, desired_capabilities: caps 它工作得很好,也就是说,即使脚本完成,Chrome浏览器也会自动分离 自从Chrome更新到

我有两个驱动Chrome浏览器的ruby脚本。我正在使用Chrome75使用这个代码

caps = Selenium::WebDriver::Remote::Capabilities.chrome
caps[:chrome_options] = {detach: true}
browser = Watir::Browser.new :chrome, desired_capabilities: caps
它工作得很好,也就是说,即使脚本完成,Chrome浏览器也会自动分离

自从Chrome更新到76.0.3809.100版后,这个版本就不再有效了,所以在我的所有脚本中,Chrome会立即打开和关闭,因为分离不再有效

我也试过这个

browser = Watir::Browser.new :chrome, :chrome_options => {:detach => true }
但这也不起作用

我使用的是Watir 6.16.5、ChromeDriver 76.0.3809.68和selenium webdrive 3.142.3

我非常感谢您对如何使用Watir启动Chrome实例的任何意见


另外,我当前的解决方法是:我在每个脚本的末尾添加了20分钟的睡眠…

您提供的功能表明,detach在
desiredCapabilities
部分(旧的JSON Wire协议)中得到了正确添加,但在新的
功能部分(新的w3c webdriver标准协议)中没有得到正确添加。当Chrome切换到v75时,它默认打开w3c模式。这几乎肯定适用于Chrome74,而不适用于Chrome75或76

该问题是Watir试图(以不正确的方式)补偿长期存在的硒问题的结果。一旦我们就硒元素在4.0()中的外观达成一致,那么我就有时间来修复Watir,以便按照您期望的方式工作

我不喜欢你现在必须这样做,但我只是验证了这一点:

options = Selenium::WebDriver::Chrome::Options.new
options.add_option(:detach, true)
browser = Watir::Browser.new :chrome, :options => options

如果它与Chrome75一起工作,与Chrome76一起崩溃,那么几乎可以肯定它是chromedriver中的一个bug。如果您(或其他人)可以复制该错误,
Selenium::WebDriver.logger.level=:info
将捕获发送给驱动程序的确切功能,这些功能可以进入错误报告中:这是添加日志后我从Selenium获得的信息:2019-08-11 09:56:27 info Selenium>>{“desiredCapabilities”:{“browserName”:“chrome”,“版本”:“平台”:“任何”,“javascriptEnabled”:true,“CSSSelectorEnabled”:true,“takesScreenshot”:false,“nativeEvents”:false,“rotatable”:false,“chromeOptions”:{“detach”:true},“功能”:{“firstMatch”:[{“browserName”:“chrome”}}