Selenium Chromedriver 添加 cookie - 无效域错误

j d*_*doe 8 python cookies selenium pickle selenium-webdriver

我正在尝试存储和上传我通过 selenium 从网页中检索的 cookie。

我是饼干的新手,所以请告诉我我做错了什么。我在尝试学习。

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

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

之后,我的 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
Run Code Online (Sandbox Code Playgroud)

在此之后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)
Run Code Online (Sandbox Code Playgroud)

add_cookies 抛出此错误:

selenium.common.exceptions.WebDriverException:消息:无效的 cookie 域:无效域:“.twitter.com”(会话信息:chrome=55.0.2883.95)(驱动程序信息:chromedriver=2.24.417412(ac882d3ce7c0d99292439bf305a6f),cc8005a6f X 10.12.1 x86_64)

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

我还尝试过更改 chromedriver 版本,更改我的代码一百万次并将我的头撞在墙上。这些都没有用。

请帮忙,非常感谢

sim*_*0de 25

我在 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)
Run Code Online (Sandbox Code Playgroud)

原因是:

  1. Selenium webdriver init 与默认 url data:
  2. add_cookie 要求当前 url 在 cookie 的域模式下。
  3. data: 不会匹配任何 cookie 域

所以,你得到invalid cookie domain错误。