我正在使用Watir 6.16.5和Selenium 3.142.3:
b = Watir::Browser.new(driver)
b.cookies.add('foo', 'Hello, world!', domain: 'www.example.com')
b.goto('http://www.example.com')
我要设置cookie,然后 进入网站 cookie设置。但是,我得到了:
Selenium::WebDriver::Error::InvalidCookieDomainError: Document is cookie-averse
WebDriverError@chrome://marionette/content/error.js:179:5
InvalidCookieDomainError@chrome://marionette/content/error.js:317:5
GeckoDriver.prototype.addCookie@chrome://marionette/content/driver.js:2641:11
我在做什么错? This可能相关,但是解决方法是什么?
答案 0 :(得分:4)
您必须在同一域中才能设置cookie。从W3C specs
中对此也有解释如果当前浏览上下文的document元素是cookie厌恶的 文档对象,返回错误,错误代码的cookie域无效。
非法尝试在其他域下设置Cookie 比当前页面。
一种解决方法是在域中设置cookie后简单地刷新页面
b = Watir::Browser.new(driver)
b.goto('http://www.example.com')
b.cookies.add('foo', 'Hello, world!', domain: 'www.example.com')
b.refresh
答案 1 :(得分:0)
您好,我可以在python中为解决方案提供如何处理Cookie的方法,希望对您有所帮助。
一旦获得cookie,就可以将其存储为:
with open("cookies.pkl","wb") as cookies:
pickle.dump(driver.get_cookies(),cookies)
注意:需要导入泡菜以将文件存储为泡菜文件
获取Cookie:
def handle_cookies():
with open("cookies.pkl","rb")as cookies:
cookie = pickle.load(cookies)
for ck in cookie:
driver.add_cookie(ck)
调用此函数时,它将处理cookie