Capybara Selenium重用现有的浏览器会话,而不是打开新窗口?

时间:2019-05-06 03:19:50

标签: selenium-webdriver capybara

在Capybara中,如何恢复现有浏览器以继续下一步。代替启动新会话并打开新窗口,然后在之前运行很多步骤。

例如: 首先:

session =  Capybara::Session.new(:headless_chrome, Capybara.app)
session.open(url)
session.click(...)
sesion.quit()

第二次:

session =  ...#retry the first session state
sesion.do_something()

1 个答案:

答案 0 :(得分:1)

Capybara被设计为一种测试工具,在这里您希望每个测试都完全独立于其他测试。因此,它不支持存储/重新加载会话,并且为每个会话使用一个新的浏览器实例(数据目录等)。为防止每次创建新会话时都创建全新的浏览器设置,可以在注册Capybara驱动程序时传递自己的--user-data-dir=<some_directory>选项,但这不是Capybara支持的用法(如果您确实不建议这样做,实际上是在进行测试,而不是进行网页抓取)。如果您真正想要的只是保留的cookie,那么另一个选择是类似https://github.com/kyamaguchi/capybara-sessionkeeper(如果您正在测试,则还是一个不好的主意,因为它将测试相互耦合)。