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?
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:
Browsing Context
.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
.
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.
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
.
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
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.