以如下代码打开浏览器,手动登录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被设计为一个测试框架,而不是一个网页抓取框架(尽管有些人使用它)。因此,测试意味着彼此隔离,Capybara做了一些工作来尝试并确保这一点发生。这意味着在每个测试中,如果有必要,您需要重新验证该测试,并且最好通过使用被测应用程序正在使用的任何身份验证库的测试模式来处理。
如果你正在使用Capybara进行网页抓取,你可以考虑配置selenium驱动程序来使用特定的用户配置文件,这样cookie就会被保存和重用。你可能还需要重写Capybara的session#reset方法来防止cookie被清除,但Capybara真的不是为这种用例设计的。