Selenium Chromedriver添加cookie - 无效的域错误

时间:2017-01-10 00:51:37

标签: python selenium cookies selenium-webdriver pickle

我正在尝试存储和上传我通过selenium从网页检索的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.common.exceptions.WebDriverException:消息:无效的cookie   域名:无效域名:“。twitter.com”(会话信息:   chrome = 55.0.2883.95)(驾驶信息:chromedriver = 2.24.417412   (ac882d3ce7c0d99292439bf3405780058fcca0a6),platform = Mac OS X 10.12.1   x86_64的)

我已经尝试了这个,所以请不要把我联系到它(Selenium addCookie getting Invalid Cookie Domain Exception even though I'm on the right domain

我也试过改变chromedriver版本,改变我的代码一百万次并且撞到墙上。这些都没有。

请帮助,非常感谢

2 个答案:

答案 0 :(得分:1)

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

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

    # first visit home page
    url = "https://www.website.com"
    driver.get(url)

    # 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 :(得分:0)

我非常担心这个错误,就像其他答案一样,我们首先必须加载页面,然后必须加载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()