Selenium调用driver.get_cookies()访问name属性触发AttributeError
问题原因
Selenium的driver.get_cookies()接口返回值为字典组成的列表,每个Cookie项都是字典类型,只能通过[键名]的方式取值,不能通过.属性名的方式访问。
你之前能运行成功大概率是之前使用的Selenium版本较旧,旧版本接口返回的是Cookie实例对象,支持.name/.value的属性访问方式,升级Selenium后接口逻辑调整,就会触发这个属性不存在的报错。
修复方案
只需要修改你代码中拼接cookie_list的那一行,把属性访问改为字典取值即可:
把原有代码:
cookie_list = list(map(lambda h: h.name+'='+h.value+'; ', driver.get_cookies()))
替换为:
cookie_list = list(map(lambda h: h['name']+'='+h['value']+'; ', driver.get_cookies()))
如果要更简洁也可以用列表推导式写法:
cookie_list = [f"{cookie['name']}={cookie['value']}; " for cookie in driver.get_cookies()]
可选优化建议
你后续用requests发送请求时,不需要自己手动拼接Cookie头,直接调用session的add_cookie方法添加Cookie更稳妥,不会出现格式错误:
s = req.session() for cookie in driver.get_cookies(): s.cookies.set(cookie['name'], cookie['value'], domain=cookie['domain'], path=cookie['path'])
内容的提问来源于stack exchange,提问作者double_wizz
相关产品推荐
相关产品推荐

