当访问 URL 与 app_host 不同时,水豚不会完全重置
Capybara does not completely reset when visit different URL than app_host
我是 Capybara 的新手,所以我可能会错过一些明显的东西,但我不确定发生了什么。我在同一个套件中有三个测试用例,app_host 设置为 URL A.
测试1:访问网站A,然后重定向到网站B,需要登录B。
测试2:访问网站B并进行一些测试
测试3:访问网站B并进行一些测试。
测试2和3,我用visit with absolute URL访问B站,代码是一样的。在测试 2 中,我不必登录,但在测试 3 中,网站 B 重定向到登录页面。
我在这里发现了一个类似的问题: 但是从 2.8 更新到 3.9 后,我仍然遇到同样的问题。
我也试过Capybara.reset_sessions! Capybara.current_session.driver.browser.manage.delete_all_cookies 每次测试都没有成功。
我正在使用 Capybara 3.29.0 和 Selenium-webdriver 3.142.6。 Chrome driver 在 docker 图像中 selenium/standalone-chrome:3.14.0-iron.
Driver报名:
Capybara.register_driver :selenium do |app|
chrome_capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
chromeoptions: {
args: %w[headless no-sandbox disable-gpu --window-size=1024,1024]
})
Capybara::Selenium::Driver.new(app,
browser: :remote,
:url => 'http://localhost:4444/wd/hub',
:desired_capabilities => chrome_capabilities)
end
Capybara.default_driver = :selenium
Capybara.javascript_driver = :selenium
知道导致行为差异的原因吗?
您使用的 Capybara 和 selenium-webdriver 版本已经过时。 WebDriver 协议仅允许在 reset
发生时重置您所在主机的 cookie,因此如果您在主机之间移动,则只会清除其中一个主机的 cookie。但是,如果您切换到使用最新版本的 Capybara 和最新版本的 selenium-webdriver 和 Chrome,那么 Capybara 将清除所有主机的 cookie(使用 CDP)
我是 Capybara 的新手,所以我可能会错过一些明显的东西,但我不确定发生了什么。我在同一个套件中有三个测试用例,app_host 设置为 URL A.
测试1:访问网站A,然后重定向到网站B,需要登录B。
测试2:访问网站B并进行一些测试
测试3:访问网站B并进行一些测试。
测试2和3,我用visit with absolute URL访问B站,代码是一样的。在测试 2 中,我不必登录,但在测试 3 中,网站 B 重定向到登录页面。
我在这里发现了一个类似的问题:
我正在使用 Capybara 3.29.0 和 Selenium-webdriver 3.142.6。 Chrome driver 在 docker 图像中 selenium/standalone-chrome:3.14.0-iron.
Driver报名:
Capybara.register_driver :selenium do |app|
chrome_capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
chromeoptions: {
args: %w[headless no-sandbox disable-gpu --window-size=1024,1024]
})
Capybara::Selenium::Driver.new(app,
browser: :remote,
:url => 'http://localhost:4444/wd/hub',
:desired_capabilities => chrome_capabilities)
end
Capybara.default_driver = :selenium
Capybara.javascript_driver = :selenium
知道导致行为差异的原因吗?
您使用的 Capybara 和 selenium-webdriver 版本已经过时。 WebDriver 协议仅允许在 reset
发生时重置您所在主机的 cookie,因此如果您在主机之间移动,则只会清除其中一个主机的 cookie。但是,如果您切换到使用最新版本的 Capybara 和最新版本的 selenium-webdriver 和 Chrome,那么 Capybara 将清除所有主机的 cookie(使用 CDP)