ruby-on-rails - 如何访问 cookie (Capybara/Selenium Chrome Webdriver)
问题描述
我已经能够找到大量声称page.driver.cookies
应该有效但没有这样的方法的示例Selenium::WebDriver::Chrome::Driver
(就是这样page.driver
)。
我一直在尝试用 pry 挖掘以找到任何响应, 或cookies
但cookie_jar
似乎什么都没有的东西。不在,或。set_cookie
clear_cookies
page
page.driver
page.driver.browser
我也不太明白读取 cookie 不是测试中的事情(RackTest 驱动程序公开#cookie_jar
但Rack::Test::Methods
仅转发set_cookie
和clear_cookies
)。为什么我不应该测试在某些条件下设置 cookie 的中间件?
解决方案
您不应该直接测试 cookie 的原因是功能/系统测试是错误的地方。这些类型的测试旨在从用户的角度测试事物,用户实际上并没有看到 cookie,他们只是看到了 cookie 启用的行为。因此,在 Capybara 测试中,您应该只测试 cookie 启用的行为,而不是设置实际的 cookie。cookie 的设置/清除确实应该在控制器或请求测试中进行测试。
如果您仍然坚持直接访问 cookie,那么可以使用 JS 通过evaluate_script
或通过 selenium 驱动程序特定方法page.driver.browser.manage.all_cookies
等访问它们 - 尽管任何时候您打电话时page.driver.xxx
您可能正在做一些您不应该做的事情。
推荐阅读
- javascript - 'TypeError: Cannot read properties of undefined (reading 'getters')' 发生在 vue-test-utils
- julia - 在 ODE 模型中加入强制函数以进行贝叶斯估计
- python - 如何使用python将(10Hz)高频记录的数据转换为(1Hz)低频?
- c# - NLog 忽略配置文件
- ios - 为什么 Xcode 一直要求我输入钥匙串密码?
- jfugue - 如何在 JFugue 5.0 中获取 Tempo 字典
- react-native - 写入 Firebase 时反应本机,未处理的拒绝
- graph-tool - 图形工具中有没有办法让边缘与源顶点具有相同的颜色而没有颜色渐变?
- c# - Mapster 忽略列表中的映射
- r - 特拉维斯 CI 错误,而 devtools::chech() 没有