3

我正在使用 Firefox 22 和 Selenium IDE 2.2.0。

我已经使用 HTTP 协议(​​不是 HTTPS)在 Firefox 中加载了一个页面。我确定该页面已设置安全 cookie(作为嵌入式 AJAX 请求的结果)。我可以使用浏览器内部 url chrome://web-developer/content/generated/view-cookie-information.html 验证这一点 - 因为在其他 cookie 中,该页面显示如下 cookie:

Name    WC_AUTHENTICATION_5122759
Value   5122759%2cDKppXa7BAqnZ0ERDLb0Wee%2bXqUk%3d
Host    .testserver.dk
Path    /
Expires At end of session
Secure  Yes
HttpOnly    No

但是,当我在 Selenium IDE 中运行 assertCookie 时,我只能看到不安全的 cookie。即 Selenium IDE 检测到所有 cookie - 除了上面的一个之外:

执行:|assertCookie | glob:WC_AUTHENTICATION_* | |产生这组可见的 cookie:

[error] Actual value 'JSESSIONID=0000uCQdh2FZ0ZA8z-O5zcGoUtD:-1;
WC_PERSISTENT=lT8Z5tbkQrvLhNm%2bGyCj%2bh4yPAU%3d%0d%0a%3b2013%2d07%2d05+13%3a18%3a18%2e807%5f1373023098807%2d3048%5f10201%5f5122827%2c%2d100%2cDKK%5f10201;
WC_SESSION_ESTABLISHED=true;
WC_ACTIVEPOINTER=%2d100%2c10201; WC_USERACTIVITY_5122827=5122827%2c10201%2cnull%2cnull%2cnull%2cnull%2cnull%2cnull%2cnull%2cnull%2cy6bjcrZgvCVe5c52BBKvcItxyF5lLravpDq9rd9I0ZmRfRNxcC2oG13Eyug3kKgbtLOHVLxm9T76%0d%0a%2fGJFLp5bOrkPoNqmc38TIr%2fO7eU%2fbd7Mfny2kQg7v6xGweYoRkXYgAEz91rH0QavFhlOjpd12A%3d%3d;'
did not match 'glob:WC_AUTHENTICATION_*'

那么有谁知道我如何使用 Selenium IDE 来验证加载 http://(不是 https://)的页面上是否存在安全 cookie?

4

1 回答 1

1

可悲的是,您正在做的是违反规范。假设安全 cookie 仅在连接安全时可用。因此,如果您使用 HTTP 连接,则看不到它。

但是,如果这只是在您的测试机器上(不是您的最终用户),您可以使用 Fiddler 修改来自服务器的响应。使用 Fiddler,您可以编写类似的程序,如果您看到此 cookie,添加另一个 cookie,或去除安全标志。

编辑:

关于 Selenium 和 cookie 的一些背景信息:

Selenium 通过浏览器工作,将 JavaScript 作为页面的一部分。因为它本质上是页面的一部分,所以它必须遵循与页面相同的所有规则。这意味着它仍然必须遵守 cookie 的安全规则。仅安全 cookie 只能在安全连接上读取,因此如果 Selenium 不在安全连接上,则无法读取安全 cookie。

HTTP 请求进来的地方是 cookie 是 HTTP 标头的一部分。请求(来自浏览器)和响应(来自服务器)都有一个 HTTP 标头。Cookie 都存在于两者中。

您想验证服务器是否设置了 cookie,因此您想检查来自服务器的 HTTP 响应是否存在 cookie。但是,由于安全限制,您不能使用 Selenium。这些安全限制由浏览器强制执行。所有信誉良好的浏览器都会执行这些策略,因为如果没有这些策略,最终用户的凭据将很容易受到损害。

这就是 Fiddler 的用武之地。Fiddler 在浏览器访问之前检查较低级别的 HTTP 数据。因此,您可以使用 Fiddler 在数据到达浏览器之前对其进行操作,以提供某种 cookie 存在的指示。

于 2013-08-12T12:21:37.930 回答