Selenium Chromedriver添加cookie-无效域错误



我正在尝试存储并上传一个cookie,该cookie是我通过selenium从网页中检索到的。

我是饼干新手,所以请告诉我我做错了什么。我正在努力学习。

我打开一个带有硒的页面,手动登录,执行一些操作,然后等待。。(我的代码设置为30秒后获取cookie)

print "adding cookies now"
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
driver.add_cookie(cookie)

之后,我的cookies.pkl文件看起来像这样:

(lp0
(dp1
Vdomain
p2
V.twitter.com
p3
sVsecure
p4
I00
sVvalue
p5
V"v3:1484006785862560132892059"
p6
sVexpiry
p7
F1531267585.126113
sVpath
p8
# more lines

在这个log_in_and_store()之后,我尝试在加载这个cookie时用selenium重新打开页面。如果操作正确,它应该会打开到我留下的页面!不是登录页面。

当我尝试将我的cookie上传到这样的网页时:

driver.get('http://www.website.com')
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
print cookie
driver.add_cookie(cookie)

add_cookies抛出此错误:

selenium.com.mon.exceptions.WebDriverException:消息:无效cookie域:无效域:".twitter.com"(会话信息:chrome=55.0.2883.95)(驾驶员信息:chromedriver=2.24.417412(ac882d3ce7c0d9929439bf3405780058fcca0a6),平台=Mac OS X 10.12.1x86_64)

我已经尝试过了,所以请不要将我链接到它(Selenium addCookie获得无效Cookie域异常,即使我在正确的域上)

我还尝试过更改chromedriver的版本,更改了无数次代码,还把头撞到墙上。这些都不起作用。

请帮忙,非常感谢

我在Py-selenium中也遇到了这个错误。

解决方案是:首先访问您要添加其cookie的网站的主页。

# first visit home page
url = "https://www.website.com"
driver.get(url)
# delete the current cookies
driver.delete_all_cookies()
# add cookies from pickled-txt or a txt file
cookies = pickle.load(open("cookies.pkl", "rb"))
for cookie in cookies:
driver.add_cookie(cookie)
# visit again and you shall see your account logged in
url = "https://www.website.com"
driver.get(url)

原因是:

  1. Selenium Web驱动程序使用默认urldata:进行初始化
  2. add_cookie()要求当前url与cookie位于相同的域模式下
  3. data:将不匹配任何cookie域

因此,您会得到invalid cookie domain错误。

我对这个错误感到非常焦虑,就像其他答案建议的那样,我们必须首先加载页面,然后加载cookie,然后再次加载页面,瞧。

import pickle
from selenium import webdriver
def save_cookie(driver):
with open("cookie", 'wb') as filehandler:
pickle.dump(driver.get_cookies(), filehandler)
def load_cookie(driver):
with open("cookie", 'rb') as cookiesfile:
cookies = pickle.load(cookiesfile)
for cookie in cookies:
print(cookie)
driver.add_cookie(cookie)
driver = webdriver.Chrome(ChromeDriverManager().install())
url = 'https://www.example.com'
driver.get(url)
load_cookie(driver)
# Do you task here 
save_cookie(driver)
driver.quit()

最新更新