我似乎遇到了与许多其他人完全相反的问题,因为无论最终结果如何,我在Ruby中的Selenium测试都会在测试结束时关闭浏览器窗口。通过或失败,它总是会关闭浏览器。我想停止这种行为。
上下文:
以前,我使用IntelliJ IDEA用Java编写测试代码。除非使用driver.quit((,否则Selenium测试的浏览器窗口在任何时候都不会关闭。这实际上非常有用,因为这意味着如果测试失败,浏览器窗口将保持打开状态-这意味着我可以查看它在浏览器中的停止位置,并帮助找出它失败的原因。这对测试写入也很有用,因为这意味着我基本上可以从中断的地方开始写下一个块,而不必手动在另一个浏览器中保持一个并行选项卡,以便在给定的屏幕中获得下一组选择器。
我在Ruby中使用RubyMine发现,当测试以任何容量结束时,浏览器都会关闭。这有点问题。虽然从技术上讲,我可以对失败进行截屏,但这意味着我将更难追溯它失败的原因(浏览器上的后退按钮,键入字段以确定是否是UI中的怪癖导致的,等等(。当然,屏幕截图会占用硬盘空间。(
我尝试过Chrome的detach=true(和true(命令开关,但没有成功。
设置:
- IDE:RubyMine
- Gems:硒网络驱动程序
- 浏览器:Chrome,使用ChromeDriver。(在Ruby中,这只涉及到使用WebDriver(
- OS:OSX
不是无头的,不使用其他框架/测试环境。这实际上是几行设置,然后在沼泽标准.rb.中点击RubyMine中的运行按钮
摘要:
我在这里或其他地方都找不到Ruby的任何现有问题,特别是为了防止RubyMine中的Selenium测试在测试结束时关闭窗口。在这种情况下,"测试结束"指的是成功(达到.rb的末尾(或失败(在这种情况中为Tracebacks(。我宁愿车窗一直开着,直到撞上司机。有什么办法我可以设置这个吗?
非常感谢。我希望这不是多余的。我也希望这将在未来帮助其他测试人员:(
您可以使用:desired_capabilities
设置此标志:
caps = Selenium::WebDriver::Remote::Capabilities.chrome("goog:chromeOptions" => {detach: true})
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps
请注意,旧的示例将使用"chromeOptions",但对于较新的Chrome版本,它需要是"goog:chromeOptions"。
@JustinKo在这里发布了答案
Chrome分离选项不再工作
您可以使用以下格式传递Chrome选项:
browser = Watir::Browser.new(
:chrome,
'goog:chromeOptions' => {detach: true}
)
@Justin Ko的回答对我有效。然而,在发布时,我收到了一条警告,告诉我使用
capabilities: caps
而不是
desired_capabilities: caps
因为它目前在发布时已被弃用。
我没有足够的声誉来发表评论,所以我发布这篇文章作为回答。
需要"selenium webdriver"Selenium::WebDriver::Chrome::Service.driver_path="C:/webdriver/chromedriver.exe";caps=Selenium::WebDriver::Remote::Capabilities.crome("goog:cromeOptions";=>{detach:true}(driver=Selenium::WebDriver.for:chrome,选项:caps