Firefox Selenium IDE:如何在加载了http://的页面上检测安全cookie?

Firefox Selenium IDE:如何在加载了http://的页面上检测安全cookie?,firefox,cookies,selenium,selenium-ide,Firefox,Cookies,Selenium,Selenium Ide,我正在使用Firefox22和SeleniumIDE2.2.0 我在firefox中使用HTTP协议(而不是HTTPS)加载了一个页面。我确信页面已经设置了一个安全cookie(作为嵌入AJAX请求的结果)。我可以使用浏览器内部url对此进行验证chrome://web-developer/content/generated/view-cookie-information.html -因为在其他cookie中,该页面显示的cookie如下所示: Name WC_AUTHENTICATION

我正在使用Firefox22和SeleniumIDE2.2.0

我在firefox中使用HTTP协议(而不是HTTPS)加载了一个页面。我确信页面已经设置了一个安全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时,我只能看到不安全的cookies。即,除上述一个cookie外,所有cookie均由Selenium IDE检测:

执行:
| 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吗?

遗憾的是,您所做的违反了规范。安全cookie假定仅在连接安全时可用。因此,如果您使用HTTP连接,则无法看到它

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

编辑:

有关Selenium和Cookie的一些背景信息:

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

HTTP请求的作用在于cookies是HTTP头的一部分。请求(来自浏览器)和响应(来自服务器)都有HTTP头。曲奇饼在这两种食物中都有

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


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

如果您拥有服务器代码,则当服务器正在测试时,您可以将安全cookie发送到不安全连接。我拥有(或可以控制)代码的服务器端和客户端-不幸的是,我必须保持安全和不安全cookie的正确组合-因为测试的目的是确保这些cookie已就位。因此-如果我理解正确,您的意思是,例如,Selenium的verifyCookiePresent正在通过HTTP请求读取浏览器cookies?@tbsalling我已经对其工作原理做了更多解释。