首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用Selenium & Splinter添加cookie

无法使用Selenium & Splinter添加cookie
EN

Stack Overflow用户
提问于 2017-11-20 13:33:43
回答 2查看 3.2K关注 0票数 2

根据下面的内容,我不知道如何解决这个非常简单的使用场景。

我有一个脚本(我每个月运行一次),它在功能上做同样的事情,并且在一个月前就开始工作了。

我希望你能给我一些建议,让我开始研究为什么这个方法不起作用。

代码语言:javascript
复制
$ python3
Python 3.6.1 (default, Mar 23 2017, 16:49:06)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.42.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from selenium import webdriver
>>> from splinter import Browser
>>> chrome_options = webdriver.ChromeOptions()
>>> browser = Browser('chrome')
>>> browser.cookies.add({'aaa':'bbb'})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/dummyuser/.virtualenvs/my-virtualenv/lib/python3.6/site-packages/splinter/driver/webdriver/cookie_manager.py", line 28, in add
    self.driver.add_cookie({'name': key, 'value': value})
  File "/Users/dummyuser/.virtualenvs/my-virtualenv/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 708, in add_cookie
    self.execute(Command.ADD_COOKIE, {'cookie': cookie_dict})
  File "/Users/dummyuser/.virtualenvs/my-virtualenv/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 256, in execute
    self.error_handler.check_response(response)
  File "/Users/dummyuser/.virtualenvs/my-virtualenv/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unable to set cookie
  (Session info: chrome=62.0.3202.94)
  (Driver info: chromedriver=2.33.506106 (8a06c39c4582fbfbab6966dbb1c38a9173bfb1a2),platform=Mac OS X 10.13.1 x86_64)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-04 08:57:30

您应该先打开url,然后加载cookie,然后可以用cookies.you打开下一个url,如果您想打开相同的url,也可以这样打开:

代码语言:javascript
复制
driver = webdriver.Chrome(executable_path=r'X:\home\xxx\chromedriver.exe')

cookies = pickle.load(open("cookies.pkl", "rb"))
driver.get("https://www.douban.com/")
for cookie in cookies:
    driver.add_cookie(cookie)
driver.get("https://www.douban.com/")

希望这能帮上忙

票数 3
EN

Stack Overflow用户

发布于 2018-02-22 13:20:13

弗洛伦特B的回答也对我有用,只是想把它放在正确的地方。

需要在某些browser.cookies.add之后调用browser.visit(...)

见Florent的评论:

方法browser.cookies.add绑定到当前域,该域在示例中未定义。您需要首先使用driver.get('http://...')设置域

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47393292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档