1

当我在 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 中的差异吗?

谢谢!

4

1 回答 1

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"
    

希望有帮助!

于 2012-08-01T05:21:58.117 回答