web-dev-qa-db-fra.com

org.openqa.Selenium.InvalidCookieDomainException: le document est opposé aux cookies en utilisant Selenium et WebDriver

J'essaie de pousser les cookies vers le pilote Web Selenium firefox stocké à partir de la session précédente, mais j'ai une erreur:

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

J'ai lu ceci HTML Standard Cookie-averse et je ne comprends rien du tout.

Donc, la question est de savoir comment envoyer des cookies à la session du pilote Web stockée à partir de la précédente?

12
user3534746

L'erreur que vous voyez en dit long:

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

Vous vous êtes référé au sujet approprié cookie-averse Document object . La documentation mentionne clairement qu'un Document Object peut être classé en tant qu'objet Document opposé aux cookies dans les cas suivants:

  • Un document qui n'a pas Browsing Context.
  • Un document dont le schéma d'URL n'est pas un schéma de réseau.

Contexte de navigation

Contexte de navigation est l'environnement dans lequel le Document Objects sont présentés à l'utilisateur, par exemple DOM Tree. Un onglet ou une fenêtre dans un Web Browser contient généralement un contexte de navigation, tout comme le fait un iframe ou des cadres dans un frameset.


Raison de l'erreur

Selon les JavaDocs, l'exception InvalidCookieDomainException est levée lorsqu'un utilisateur tente d'ajouter un cookie sous un autre domaine que l'URL actuelle.


Solution

En clair, si vous avez stocké le cookie du domaine example.com, ces cookies stockés ne peuvent pas être transmis via la session du pilote Web à un autre domaine différent, par exemple example.edu. Les cookies stockés ne peuvent être utilisés que dans example.com.

8
DebanjanB

Merci DebanjanB! J'ai essayé de pousser les cookies juste après le démarrage du pilote et avant ouvrir l'onglet URL.

Solution de travail:

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

Il suffit d'ouvrir un onglet, d'ajouter un cookie et de rouvrir un onglet à nouveau

8
user3534746

Je suppose que votre situation est que vous définissez un cookie avec driver.manage.addCookie(....) avant d'obtenir l'url avec driver.get('http://mydomain').

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