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 しか表示されません。つまり、上記の 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 が存在することを確認する方法を知っている人はいますか?

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 データにアクセスする前に、HTTP データを下位レベルで検査します。したがって、Fiddler を使用して、データがブラウザーに到達する前にデータを操作して、Cookie が存在したことを何らかの形で示すことができます。

于 2013-08-12T12:21:37.930 に答える