gpt4 book ai didi

cucumber - 使用 javascript 设置 cookie 在 Poltergeist 和/或 PhantomJS 中不起作用

转载 作者:行者123 更新时间:2023-12-03 22:22:02 27 4
gpt4 key购买 nike

我有一个使用 document.cookie = value 设置 cookie 的网页,它在服务器上运行时运行良好。

但是,在我的 cucumber 测试中(使用 Poltergeist/PhantomJS),cookie 不会从一个页面持续到下一个页面。

测试流程是:

  1. 打开页面 A
  2. 用户点击按钮,触发JS设置cookie
  3. 用户点击页面 B 的链接
  4. 页面 B 有一个反射(reflect) cookie 值的组件

在针对正在运行的服务器的真实浏览器中,没问题。

但在 cucumber 中,第 4 步的显示显示它看到的是一个空白 cookie。

有谁知道我该如何解决或调查这个问题?

最佳答案

原来我从some other page那里得到了一些不好的建议,这实际上是在干扰 Poltergeist 的自然行为。

我解决了这些问题,Poltergeist 成功了。从那以后,我实现了一种更好的替代方法来在测试中设置 cookie,一切都很好。

应大众需求,这是我测试步骤中的 cookie-setter 代码:

case Capybara.current_session.driver
when Capybara::Poltergeist::Driver
page.driver.set_cookie(k,v)
when Capybara::RackTest::Driver
headers = {}
Rack::Utils.set_cookie_header!(headers,k,v)
cookie_string = headers['Set-Cookie']
Capybara.current_session.driver.browser.set_cookie(cookie_string)
when Capybara::Selenium::Driver
page.driver.browser.manage.add_cookie(:name=>k, :value=>v)
else
raise "no cookie-setter implemented for driver #{Capybara.current_session.driver.class.name}"
end

重要警告:如果您使用上述代码通过测试步骤设置 cookie,您页面的 Javascript 可能不允许覆盖它。如果您的测试需要您的页面更改 cookie,您可能会发现 cookie 永远不会被更改。

关于cucumber - 使用 javascript 设置 cookie 在 Poltergeist 和/或 PhantomJS 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17203986/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com