web-dev-qa-db-ja.com

org.openqa.Selenium.InvalidCookieDomainException:ドキュメントはSeleniumとWebDriverを使用してcookieを嫌います

前のセッションから保存されたSelenium firefox WebdriverにCookieをプッシュしようとしていますが、エラーが発生しました。

org.openqa.Selenium.InvalidCookieDomainException: Document is cookie-averse

私はこれを読みます HTML Standard Cookie-averse と何も理解していません。

それで、質問は前のものから保存されたwebdriverセッションにクッキーをプッシュする方法ですか?

12
user3534746

あなたが見ているエラーはそれをすべて言います:

org.openqa.Selenium.InvalidCookieDomainException: Document is cookie-averse

適切なトピック cookie-averse Document object を参照しました。ドキュメントには、Document Objectが次の状況ではcookieを嫌うDocumentオブジェクトとして分類される可能性があることが明記されています。

  • Browsing Contextがないドキュメント。
  • URLのスキームがネットワークスキームではないドキュメント。

コンテキストの閲覧

Browsing Context は、Document Objectsがユーザーに提示される環境です。 DOM TreeWeb Browserのタブまたはウィンドウには、通常、iframeまたはframesetのフレームと同じように、ブラウジングコンテキストが含まれています。


エラーの理由

JavaDocsによると、ユーザーが現在のURLとは異なるドメインにCookieを追加しようとすると、例外 InvalidCookieDomainException がスローされます。


解決

簡単に言うと、ドメインexample.comからCookieを保存した場合、これらの保存されたCookieは、Webドライバーセッションを介して他の異なるドメインにプッシュできません。 example.edu。保存されたCookieは、example.com内でのみ使用できます。

8
DebanjanB

ありがとうDebanjanB!ドライバーを起動してbefore URLタブを開いた直後にCookieをプッシュしようとしました。

実用的なソリューション:

driver.get('http://mydomain')
driver.manage.addCookie(....)
driver.get('http://mydomain')

タブを開き、Cookieを追加して、もう一度タブを開くだけです

8
user3534746

driver.manage.addCookie(....)を使用してURLを取得する前に、driver.get('http://mydomain')を使用してcookieを設定していると思います。

Cookie can be only add to the request with same domain.
When webdriver init, it's request url is `data:` so you cannot add cookie to it.
So first make a request to your url then add cookie, then request you url again.
0
Kris Roofe