ruby-on-rails - Cucumber/Capybara/Selenium - 设置 cookie

标签 ruby-on-rails testing selenium cucumber capybara

对于我的测试用例,我尝试通过以下方式设置 cookie,但它没有被设置

1)browser = Capybara.current_session.driver.browser
  browser.manage.add_cookie :name => "xxx", :value => "cookie"

2)driver = Capybara.current_session.driver
  br = driver.browser.send(:bridge)
  br.addCookie({
    'name'    => "xxx",
    'domain'  => "localhost",
    'value'   => "cookie",
    'path'    => '/',
    'expires' => (Time.now + 100.years).to_i
  })

如果我遗漏了什么或者我必须以其他方式做,请告诉我

最佳答案

Capybara 必须首先访问您正在测试的网站。这是设置任何 cookie 之前的必要步骤。

这个有效:

visit '/'
browser = Capybara.current_session.driver.browser
browser.manage.add_cookie name: "name", value: "value"

为了获得最佳性能,请只运行一次此步骤,或者查看是否已设置 cookie。这是设置 cookieconsent cookie 的实际代码,它绕过了 cookie 墙。

browser = page.driver.browser
unless browser.manage.cookie_named("cookieconsent")
  visit '/'
  browser.manage.add_cookie name: "cookieconsent", value: "dismiss"
end

我正在使用 page.driver 获取驱动程序。它与 Capybara.current_session.driver 相同。

关于ruby-on-rails - Cucumber/Capybara/Selenium - 设置 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16910477/

相关文章:

ruby-on-rails - 如何将 select2-rails 与acts_as_taggable_on (simple_form) 一起使用

单独测试 Dexterity 内容创建

java - Selenium WebDriver Java - 我无法从 span 获取动态文本

Selenium - LoadableComponent 和 SlowLoadableComponent 有什么区别

ruby-on-rails - Learn-Rails 教程错误 "An SMTP To address is required to send a message"

ruby-on-rails - 我可以将 Web 服务器和应用程序服务器部署到同一个 AWS EC2 实例吗?

mysql - 如何更改或设置 "Passenger Pool Idle Time"?

c# - 无效异步方法的断言

android - 如何在另一个模块的androidTest目录中使用代码

python - 通过多个类的 HREF 属性查找页面上的元素