selenium.common.exceptions.WebDriverException: Message: unable to set

本人使用的版本是

python3.7

selenium3.14.1

macOS10.13.3

另外是在谷歌浏览器做的实验

下面看代码:

  1. 我想要添加一个name为MUSIC_U的cookie,运行后出现错误selenium.common.exceptions.WebDriverException: Message: unable to set 

    # -*- coding: utf-8 -*-
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.wait import WebDriverWait
    brguge=webdriver.Chrome()#声明驱动对象
    try:
        print (brguge.get_cookies())
        cookie = {
            'domain': '.bilibili.com', 
            'expiry': 1540118011, 
            'httpOnly': False, 
            'name': 'MUSIC_U', 
            'path': '/', 
            'secure': False, 
            'value': '261e3a119ae77340f902f8c5c9ec95135053be85f4706fa6985046c7a33d7409c8f2a7d72751daae6c35ab6dff831cdadea9c0c5cfc323bb7955a739ab43dce1'
            }
        brguge.add_cookie(cookie)
        print ("# add # ",brguge.get_cookies()) 
    
    finally:
        brguge.close()#关闭谷歌浏览器
    []
    Traceback (most recent call last):
      File "/Users/birenjianmo/Desktop/python3/webtest2.py", line 11, in <module>
        brguge.add_cookie(cookie)
      File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 894, in add_cookie
        self.execute(Command.ADD_COOKIE, {'cookie': cookie_dict})
      File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
        self.error_handler.check_response(response)
      File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
        raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.WebDriverException: Message: unable to set cookie
      (Session info: chrome=69.0.3497.100)
      (Driver info: chromedriver=2.42.591059 (a3d9684d10d61aa0c45f6723b327283be1ebaad8),platform=Mac OS X 10.13.3 x86_64)

    从报错来看虽然知道是cookie出错了,但是好像并没有提供什么有用的信息

  2. 接着我尝试先请求一下网站,看看cookie的结构,于是加了一行代码,结果发现竟然成功添加了MUSIC_U

    brguge.get('https://www.bilibili.com/video/av32022817/?spm_id_from=333.334.chief_recommend.17')#发送get请求
    # -*- coding: utf-8 -*-
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.wait import WebDriverWait
    brguge=webdriver.Chrome()#声明驱动对象
    try:
        brguge.get('https://www.bilibili.com/video/av32022817/?spm_id_from=333.334.chief_recommend.17')#发送get请求
        print (brguge.get_cookies())
        cookie = {
            'domain': '.bilibili.com', 
            'expiry': 1540118011, 
            'httpOnly': False, 
            'name': 'MUSIC_U', 
            'path': '/', 
            'secure': False, 
            'value': '261e3a119ae77340f902f8c5c9ec95135053be85f4706fa6985046c7a33d7409c8f2a7d72751daae6c35ab6dff831cdadea9c0c5cfc323bb7955a739ab43dce1'
            }
        brguge.add_cookie(cookie)
        print ("# add # ",brguge.get_cookie("MUSIC_U")) 
    
    finally:
        brguge.close()#关闭谷歌浏览器
    [{'domain': '.bilibili.com', 'expiry': 1632136843.835492, 'httpOnly': False, 'name': 'buvid3', 'path': '/', 'secure': False, 'value': '39A1DFA0-A52D-467A-95B9-3EE7B9CE156D163038infoc'}, {'domain': '.bilibili.com', 'expiry': 1540120843, 'httpOnly': False, 'name': 'finger', 'path': '/', 'secure': False, 'value': '14bc3c4e'}]
    # add #  {'domain': '.bilibili.com', 'expiry': 1540118011, 'httpOnly': False, 'name': 'MUSIC_U', 'path': '/', 'secure': True, 'value': '261e3a119ae77340f902f8c5c9ec95135053be85f4706fa6985046c7a33d7409c8f2a7d72751daae6c35ab6dff831cdadea9c0c5cfc323bb7955a739ab43dce1'}
    

    虽然cookie是加上去了,但是我在想是不是只要随便先请求一个网站就可以添加cookie了?

  3. 这次我们不请求bilibili,而是请求baidu,然后添加bilibili的cookie,看看能不能添加成功

    # -*- coding: utf-8 -*-
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.support.wait import WebDriverWait
    import traceback
    brguge=webdriver.Chrome()#声明驱动对象
    try:
        brguge.get('https://www.baidu.com/')#发送get请求
        print (brguge.get_cookies())
        cookie = {
            'domain': '.bilibili.com', 
            'expiry': 1540118011, 
            'httpOnly': False, 
            'name': 'MUSIC_U', 
            'path': '/', 
            'secure': False, 
            'value': '261e3a119ae77340f902f8c5c9ec95135053be85f4706fa6985046c7a33d7409c8f2a7d72751daae6c35ab6dff831cdadea9c0c5cfc323bb7955a739ab43dce1'
            }
        brguge.add_cookie(cookie)
        print ("# add # ",brguge.get_cookie("MUSIC_U")) 
    except:
        print(traceback.format_exc())
    finally:
        brguge.close()#关闭谷歌浏览器
    [{'domain': '.baidu.com', 'httpOnly': False, 'name': 'H_PS_PSSID', 'path': '/', 'secure': False, 'value': '1433_21108_20930'}, {'domain': '.baidu.com', 'expiry': 3685012823.861422, 'httpOnly': False, 'name': 'BIDUPSID', 'path': '/', 'secure': False, 'value': 'E9BEFFB7740A6175A9660285BC43D724'}, {'domain': '.baidu.com', 'expiry': 3685012823.861463, 'httpOnly': False, 'name': 'PSTM', 'path': '/', 'secure': False, 'value': '1537529176'}, {'domain': '.baidu.com', 'expiry': 1537615577.642583, 'httpOnly': False, 'name': 'BDORZ', 'path': '/', 'secure': False, 'value': 'B490B5EBF6F3CD402E515D22BCDA1598'}, {'domain': 'www.baidu.com', 'expiry': 1538393177, 'httpOnly': False, 'name': 'BD_UPN', 'path': '/', 'secure': False, 'value': '123253'}, {'domain': 'www.baidu.com', 'httpOnly': False, 'name': 'BD_HOME', 'path': '/', 'secure': False, 'value': '0'}, {'domain': 'www.baidu.com', 'expiry': 2483609140.861528, 'httpOnly': False, 'name': 'delPer', 'path': '/', 'secure': False, 'value': '0'}, {'domain': '.baidu.com', 'expiry': 3685012823.861343, 'httpOnly': False, 'name': 'BAIDUID', 'path': '/', 'secure': False, 'value': 'E9BEFFB7740A6175A9660285BC43D724:FG=1'}]
    # add #  None

    实验结果是bilibili的cookie未添加进去,但是没有报错

通过上面的实验,可以总结两点

  1. 如果未先请求网站而直接添加cookie会报错,应该是漏了初始化的哪一步,希望大神指出
  2. 如果未请求cookie指定的网站直接添加cookie,则不会生效,cookie无法添加
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值