首页 > 解决方案 > 如何访问 cookie (Capybara/Selenium Chrome Webdriver)

问题描述

我已经能够找到大量声称page.driver.cookies应该有效但没有这样的方法的示例Selenium::WebDriver::Chrome::Driver(就是这样page.driver)。

我一直在尝试用 pry 挖掘以找到任何响应, 或cookiescookie_jar似乎什么都没有的东西。不在,或。set_cookieclear_cookiespagepage.driverpage.driver.browser

我也不太明白读取 cookie 不是测试中的事情(RackTest 驱动程序公开#cookie_jarRack::Test::Methods仅转发set_cookieclear_cookies)。为什么我不应该测试在某些条件下设置 cookie 的中间件?

标签: ruby-on-railsseleniumtestingcookiescapybara

解决方案


您不应该直接测试 cookie 的原因是功能/系统测试是错误的地方。这些类型的测试旨在从用户的角度测试事物,用户实际上并没有看到 cookie,他们只是看到了 cookie 启用的行为。因此,在 Capybara 测试中,您应该只测试 cookie 启用的行为,而不是设置实际的 cookie。cookie 的设置/清除确实应该在控制器或请求测试中进行测试。

如果您仍然坚持直接访问 cookie,那么可以使用 JS 通过evaluate_script或通过 selenium 驱动程序特定方法page.driver.browser.manage.all_cookies等访问它们 - 尽管任何时候您打电话时page.driver.xxx您可能正在做一些您不应该做的事情。


推荐阅读