我有几个驱动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分钟的睡眠时间。
答案 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