Ruby 中的 Selenium WebDriver:防止测试在结束时关闭浏览器 window

Selenium WebDriver in Ruby: Preventing the test from closing the browser window at end

我似乎遇到了许多其他人遇到的 相反 问题 - 因为我在 Ruby 中的 Selenium 测试将关闭浏览器 window测试结束,不管最终结果如何。通过或失败,它将始终关闭浏览器。我想停止这个。

上下文:

之前我使用 IntelliJ IDEA 在 Java 中编写测试代码。在这种情况下,用于 Selenium 测试的浏览器 windows 将不会关闭,除非您使用 driver.quit()。这实际上非常有用,因为它意味着如果测试失败,浏览器 window 将保持打开状态 - 这意味着我可以查看它在浏览器中停止的位置并帮助找出它失败的原因。这对于测试 writing 也很有用,因为这意味着我基本上可以从我停下来的地方开始写下一个块,而不必在另一个浏览器中手动保持并行选项卡在给定屏幕中获取下一组选择器。

我在 Ruby 中使用 RubyMine 发现当测试以任何容量结束时浏览器将关闭。这有点问题。虽然从技术上讲我可以对失败进行截屏,但这意味着我将更难追溯它失败的原因(浏览器上的后退按钮,在字段中键入以解决我们 UI 中的怪癖是否导致它, ETC)。当然,屏幕截图会占用硬盘 space。 ;)

我试过 Chrome 的 detach=true(和 True)命令开关,但没有用。

设置:

不是无头的,不使用其他 frameworks/testing 环境。它实际上是几行设置,然后在 RubyMine 中点击 运行 按钮在一个沼泽标准 .rb.

总结:

我无法在这里或在线其他地方找到关于 Ruby 的任何现有问题,特别是为了在 Ruby 我的 window 上关闭 Selenium 测试测试结束。 "Test end" 在这种情况下指的是成功(到达 .rb 的末尾)或失败(在这种情况下为回溯)。我更希望 window 保持打开状态,直到它达到 driver.quit 行。有什么办法可以设置吗?

非常感谢。我希望这不是多余的。我也希望这对以后的其他测试人员有所帮助:)

@JustinKo 在这里发布了一个答案

您可以使用以下格式传递 Chrome 选项:

    browser = Watir::Browser.new(
      :chrome,
      'goog:chromeOptions' => {detach: true}
    )

您可以使用 :desired_capabilities 设置此标志:

caps = Selenium::WebDriver::Remote::Capabilities.chrome("goog:chromeOptions" => {detach: true})
driver = Selenium::WebDriver.for :chrome, desired_capabilities: caps

请注意,旧示例将使用 "chromeOptions",但对于较新的 Chrome 版本,需要使用 "goog:chromeOptions"。

@Justin Ko 的回答对我有用。然而,在发布时我收到一条警告,告诉我使用

capabilities: caps

而不是

desired_capabilities: caps

因为在发布时它目前已被弃用。

我没有足够的声誉来发表评论,所以我将其作为答案发布。