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

标签 python selenium cookies selenium-webdriver pickle

我正在尝试存储和上传通过 selenium 从网页检索的 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.common.exceptions.WebDriverException: Message: invalid cookie domain: invalid domain:".twitter.com" (Session info: chrome=55.0.2883.95) (Driver info: 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 版本,更改代码一百万次,然后把头撞到墙上。这些都不起作用。

请帮忙,非常感谢

最佳答案

我在 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 Webdriver 使用默认 url data: 进行初始化。
  2. add_cookie() 要求当前 url 与 cookie 处于同一域模式下。
  3. 数据:不会匹配任何 Cookie 域

因此,您会收到无效的 cookie 域错误。

关于python - Selenium Chromedriver 添加 cookie - 无效域错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41559510/

相关文章:

ios - 在用于移动网络的 iOS 设备上与 Appium 1.4.13 一起使用时,实习生测试框架挂起/不执行任何操作

python - 使用BeautifulSoup打印目录中所有html文件的内容

python - 通过给定的 geojson 分割包含 lat/lng 的 pandas DataFrame

python - 从 Django 中的模型发出加载对象

java - Selenium WebDriver + Java - 如何为 Firefox 配置代理设置?

javascript - 通过 Javascript 将 Cookie 值加 1

python - 如何根据另一个数组的引用值对数组的值求和

c# - 找不到元素

javascript - 如果用户使用 JavaScript 单击 cookie 上的按钮,我如何存储?

javascript - 如何在每个 session 中更改链接颜色