org.openqa.selenium.InvalidCookieDomainException:使用Selenium和WebDriver,文档是厌恶cookie的

时间:2018-01-20 03:45:12

标签: selenium selenium-webdriver cookies webdriver

我正在尝试将cookie推送到以前会话中存储的selenium firefox webdriver,但是我收到了错误:

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

我读了这个HTML Standard Cookie-averse并且完全没有理解。

那么,问题是如何将cookie推送到之前存储的webdriver会话?

3 个答案:

答案 0 :(得分:7)

谢谢 DebanjanB ! 我试图在驱动程序启动后推送cookie,然后打开URL选项卡之前。

工作解决方案:

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

只需打开标签页,添加Cookie并再次重新打开标签

答案 1 :(得分:6)

您看到的错误说明了一切:

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

您已参考适当的主题cookie-averse Document object。文档清楚地提到,在下列情况下,Document Object可能被归类为反对cookie的文档对象:

  • 没有 Browsing Context
  • 的文档
  • 其网址方案不是网络方案的文档。

浏览上下文

Browsing Context是向用户呈现Document Objects的环境,例如的 DOM Tree 即可。 Web Browser中的标签页或窗口通常包含浏览上下文,就像iframeframesetexample.com中的框架一样。

错误原因

根据JavaDocs,当用户尝试在与当前URL不同的域下添加cookie时,会引发异常InvalidCookieDomainException

解决方案

简单来说,如果您已经存储了域 example.edu 中的Cookie,则这些存储的Cookie无法通过webdriver会话推送到任何其他不同的域名,例如:的 example.com 即可。存储的Cookie只能在 class Application has_one :referral has_one :detail end class Referral belongs_to :application belongs_to :status end class Status has_many :referrals end class Detail belongs_to :application end

中使用

答案 2 :(得分:0)

我想您的情况是,在使用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.