Watir-webdriver不存储所有cookie

时间:2012-07-24 05:21:03

标签: firefox cookies watir-webdriver

当我在firefox(V-12)上转到以下链接时,我的Ubuntu机器上的浏览器允许我正常登录。

https://r.espn.go.com/members/v3_1/login?language=en&forwardUrl=&appRedirect=http%3A%2F%2Fgames.espn.go.com

但是,如果我使用watir-webdriver,我会收到消息:“必须启用Cookie才能登录。”

以下是使用Watir重现此问题的代码:

require 'watir-webdriver'
browser = Watir::browser.new
browser.goto "https://r.espn.go.com/members/v3_1/login?language=en&forwardUrl=&appRedirect=http%3A%2F%2Fgames.espn.go.com"

您会注意到浏览器在“电子邮件地址或成员名称”字段下方显示“必须启用Cookie”错误消息。当我查看存储的cookie时,我注意到并非所有以正常模式存储的cookie都可用。我通过在存储的cookie中搜索“go.com”来比较这一点。

知道什么会导致两种模式之间存储的cookie存在差异,使用相同的浏览器?

谢谢!

1 个答案:

答案 0 :(得分:3)

watir-webdriver没有问题或不一致。这里发生的事情是网站编码的结果。

您要访问的页面(https://r.espn.go.com/members/v3_1/login?language=en&forwardUrl=&appRedirect=http%3A%2F%2Fgames.espn.go.com)旨在成为http://espn.go.com上的叠加层。编码网站的人假设在点击主页面后总是会访问覆盖页面。因此,主页面(http://espn.go.com)设置cookie以测试您的用户代理是否启用了Cookie。带有登录表单的覆盖页面会检查测试cookie是否存在,如果没有,则显示您看到的警告。

重要的是要理解,watir-webdriver默认为每个新浏览器实例的干净配置文件。这意味着浏览器没有任何Cookie,扩展程序,首选项或浏览历史记录。由于干净的配置文件从未访问过http://espn.go.com来接收测试cookie,因此会显示警告。

有两种方法可以避免此警告:

  1. 您可以在登录页面之前访问主页面,如下所示:

    require 'watir-webdriver'
    browser = Watir::Browser.new
    browser.goto "espn.go.com"
    browser.goto "https://r.espn.go.com/members/v3_1/login?language=en&forwardUrl=&appRedirect=http%3A%2F%2Fgames.espn.go.com"
    
  2. 或者,您可以使用默认的Firefox配置文件,其中(可能)已经有测试cookie:

    require 'watir-webdriver'
    browser = Watir::Browser.new :firefox, :profile => "default"
    browser.goto "https://r.espn.go.com/members/v3_1/login?language=en&forwardUrl=&appRedirect=http%3A%2F%2Fgames.espn.go.com"
    
  3. 希望有所帮助!