我正在尝试将cookie推送到以前会话中存储的selenium firefox webdriver,但是我收到了错误:
org.openqa.selenium.InvalidCookieDomainException: Document is cookie-averse
我读了这个HTML Standard Cookie-averse并且完全没有理解。
那么,问题是如何将cookie推送到之前存储的webdriver会话?
答案 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
中的标签页或窗口通常包含浏览上下文,就像iframe
中frameset
或example.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.