我是Capybara的新手,所以我可能会错过一些明显的东西,但我不确定发生了什么。我在同一套件中有三个测试用例,app_host设置为URL A。
测试1:访问网站A,然后重定向到网站B并要求登录到B。
测试2:访问网站B并执行一些测试
测试3:访问网站B并进行一些测试。
在测试2和测试3中,我使用带有绝对URL的访问来访问网站B,代码是相同的。在测试2中,我不必登录,但在测试3中,网站B重定向到登录页面。
我在这里发现了一个类似的问题:无头铬的水豚;t清除使用不同子域的测试用例之间的会话,但在从2.8更新到3.9之后,我仍然有相同的问题。我也试过Capybara.reset_sessions!和Capybara.current_session.driver.browser.manage.delete_all_cookies。
我使用的是Capybara 3.29.0和Selenium网络驱动程序3.142.6。Chrome驱动程序位于docker镜像硒/独立Chrome:3.14.0-iron中。
驾驶员注册:
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协议只允许在reset
发生时重置您所在主机的cookie,因此,如果您在主机之间移动,则只有其中一个主机的cookie会被清除。然而,如果您切换到使用最新版本的Capybara和最新版本硒网络驱动程序和Chrome,则Capybara将清除所有主机的cookie(使用CDP)