有没有办法保持 Capybara 的登录状态?
Is there a way to maintain the login status in Capybara?
例如在以下代码中打开浏览器,手动登录Google
require "bundler/inline"
gemfile do
source "https://rubygems.org"
gem "webdrivers"
gem "capybara", require: "capybara/dsl"
end
Capybara.current_driver = :selenium_chrome
Capybara.visit("https://www.google.co.jp/")
gets
但是我再执行一次,登录状态会被取消,如果是2FA,就很麻烦了。
有什么好的方法吗?
Capybara 被设计为测试框架,而不是 web-scraping 框架(尽管有些人为此使用 if)。因此,测试应该相互隔离,而 Capybara 做了一些工作来尝试确保这种情况发生。这意味着在每个测试中,如果该测试有必要,您需要 re-authenticate,最好通过使用被测应用程序正在使用的任何身份验证库的测试模式来处理。
如果您将 Capybara 用于 web-scraping,您可以考虑配置 selenium 驱动程序以使用特定的用户配置文件,以便保存和重复使用 cookie。您可能还需要覆盖 Capybaras session#reset 方法以防止清除 cookie,但 Capybara 确实不是为该用例设计的。
例如在以下代码中打开浏览器,手动登录Google
require "bundler/inline"
gemfile do
source "https://rubygems.org"
gem "webdrivers"
gem "capybara", require: "capybara/dsl"
end
Capybara.current_driver = :selenium_chrome
Capybara.visit("https://www.google.co.jp/")
gets
但是我再执行一次,登录状态会被取消,如果是2FA,就很麻烦了。
有什么好的方法吗?
Capybara 被设计为测试框架,而不是 web-scraping 框架(尽管有些人为此使用 if)。因此,测试应该相互隔离,而 Capybara 做了一些工作来尝试确保这种情况发生。这意味着在每个测试中,如果该测试有必要,您需要 re-authenticate,最好通过使用被测应用程序正在使用的任何身份验证库的测试模式来处理。
如果您将 Capybara 用于 web-scraping,您可以考虑配置 selenium 驱动程序以使用特定的用户配置文件,以便保存和重复使用 cookie。您可能还需要覆盖 Capybaras session#reset 方法以防止清除 cookie,但 Capybara 确实不是为该用例设计的。