Capybara Selenium 重用现有的浏览器会话,而不是打开新的 windows?
Capybara Selenium reuse existing browser session, instead of opening new windows?
在 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()
Capybara 被设计为一种测试工具,您希望每个测试都完全独立于其他测试。因此,它不支持 storing/reloading 会话,并为每个会话使用新的浏览器实例(数据目录等)。为了防止每次创建新会话时都创建一个全新的浏览器设置,您可以在注册水豚驱动程序时传递自己的 --user-data-dir=<some_directory>
选项,但这不是水豚支持的用法(如果您确实不是一个好主意'实际上是在做测试而不是网络抓取)。如果您真正想要的是保留 cookie,则另一种选择类似于 https://github.com/kyamaguchi/capybara-sessionkeeper(如果您正在测试,这又是个坏主意,因为它会将测试相互耦合)。
在 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()
Capybara 被设计为一种测试工具,您希望每个测试都完全独立于其他测试。因此,它不支持 storing/reloading 会话,并为每个会话使用新的浏览器实例(数据目录等)。为了防止每次创建新会话时都创建一个全新的浏览器设置,您可以在注册水豚驱动程序时传递自己的 --user-data-dir=<some_directory>
选项,但这不是水豚支持的用法(如果您确实不是一个好主意'实际上是在做测试而不是网络抓取)。如果您真正想要的是保留 cookie,则另一种选择类似于 https://github.com/kyamaguchi/capybara-sessionkeeper(如果您正在测试,这又是个坏主意,因为它会将测试相互耦合)。