在Mac上使用Ruby Watir和Chrome 76及更高版本打开分离的Chrome

时间:2019-08-10 09:18:40

标签: ruby google-chrome selenium-chromedriver watir

我有几个驱动Chrome浏览器的ruby脚本。我正在使用Chrome 75使用此代码...

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实例的信息,我深表感谢。

P.S。我目前的解决方法:在每个脚本的结尾添加了20分钟的睡眠时间。

1 个答案:

答案 0 :(得分:1)

您提供的功能表明在desiredCapabilities部分(旧的JSON Wire协议)中已正确添加了detach,但在新的capabilities部分(新的w3c Webdriver标准协议)中未正确添加了分离。 Chrome切换到v75后,默认情况下会打开w3c模式。几乎可以肯定,这适用于Chrome 74,而不适用于Chrome 75或76。

此问题是Watir尝试(以不正确的方式)补偿长期存在的Selenium问题的结果。一旦我们就Selenium产品在4.0(https://github.com/SeleniumHQ/selenium/pull/7378)中的外观达成共识,那么我将有时间修复Watir,以使事情按您期望的方式进行。

我不喜欢这是您现在必须做的,但是我只是验证了它的作用:

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