鱼C论坛

 找回密码
 立即注册
查看: 2626|回复: 11

[已解决]seleniumcookie

[复制链接]
发表于 2023-5-17 19:08:03 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 歌者文明清理员 于 2023-5-17 19:12 编辑

f12只看到了字符串,可selinuum用的是字典
最佳答案
2023-5-17 19:08:04
根据您提供的信息,我猜测您在使用 Selenium 自动化测试时遇到了一个问题,即 F12 开发者工具中只能看到字符串形式的 cookie,但是 Selenium 使用的是字典形式的 cookie。

这个问题的解决方法是将字符串形式的 cookie 转换为字典形式的 cookie。可以使用 Python 中的 requests 模块中的 cookiesjar 类来实现这个转换。具体操作如下:

1. 导入 requests 模块:

  
  1.    import requests
  2.    
复制代码

2. 创建一个 cookiejar 对象:

  
  1.    cookie_jar = requests.cookies.cookiejar_from_dict({})
  2.    
复制代码

3. 将字符串形式的 cookie 添加到 cookiejar 对象中:

  
  1.    cookie_str = "cookie1=value1; cookie2=value2"
  2.    cookies = requests.utils.cookiejar_from_dict(requests.utils.dict_from_cookiejar(cookie_jar))
  3.    requests.utils.add_dict_to_cookiejar(cookies, requests.utils.dict_from_cookie_string(cookie_str))
  4.    
复制代码

4. 将 cookiejar 对象转换为字典形式的 cookie:

  
  1.    cookie_dict = requests.utils.dict_from_cookiejar(cookie_jar)
  2.    
复制代码

这样,您就可以将字符串形式的 cookie 转换为字典形式的 cookie,以便在 Selenium 中使用了。

最佳答案

查看完整内容

根据您提供的信息,我猜测您在使用 Selenium 自动化测试时遇到了一个问题,即 F12 开发者工具中只能看到字符串形式的 cookie,但是 Selenium 使用的是字典形式的 cookie。 这个问题的解决方法是将字符串形式的 cookie 转换为字典形式的 cookie。可以使用 Python 中的 requests 模块中的 cookiesjar 类来实现这个转换。具体操作如下: 1. 导入 requests 模块: 2. 创建一个 cookiejar 对象: 3. 将字符串形式的 cooki ...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-5-17 19:14:56 | 显示全部楼层

我帮你追问了

根据您提供的报错信息,显示  'requests.utils'  模块没有名为  'dict_from_cookie_string'  的属性。这可能是因为您使用的是较新版本的 requests 库,而该方法在该版本中已被删除或更改。

您可以尝试使用以下方法来将字符串形式的 cookie 转换为字典形式的 cookie:

  1. import requests

  2. # 创建一个 cookiejar 对象
  3. cookie_jar = requests.cookies.RequestsCookieJar()

  4. # 将字符串形式的 cookie 添加到 cookiejar 对象中
  5. cookie_str = "cookie1=value1; cookie2=value2"
  6. cookies = {cookie.split("=")[0]: cookie.split("=")[1] for cookie in cookie_str.split("; ")}
  7. for name, value in cookies.items():
  8.     cookie_jar.set(name, value)

  9. # 将 cookiejar 对象转换为字典形式的 cookie
  10. cookie_dict = requests.utils.dict_from_cookiejar(cookie_jar)
复制代码


这样,您应该能够将字符串形式的 cookie 转换为字典形式的 cookie,并在 Selenium 中使用它们。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-5-17 19:19:52 | 显示全部楼层
歌者文明清理员 发表于 2023-5-17 19:16
你就不能把联网模式打开吗,driver.findeleementbyxxxxx的我也是服了


[b]貌似 gpt4 给出的方法更简单:

对不起,我之前的解释中出现了错误。 requests.utils 模块没有 dict_from_cookie_string 这个函数。对于将cookie字符串转换为字典,您可以使用Python的 http.cookies 模块。以下是转换过程:

1. 首先,导入 http.cookies 模块:

  
  1. from http import cookies
  2.    
复制代码


2. 创建一个 SimpleCookie 对象,并将cookie字符串传给它:

  
  1. cookie = cookies.SimpleCookie()
  2. cookie.load("cookie1=value1; cookie2=value2")
  3.    
复制代码


3. 你可以通过以下方式将其转化为字典:

  
  1. cookie_dict = {key: morsel.value for key, morsel in cookie.items()}
  2.    
复制代码


这样,您就可以将cookie字符串转换为字典,以便在Selenium中使用了。
[/b]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-5-17 19:08:04 | 显示全部楼层    本楼为最佳答案   
根据您提供的信息,我猜测您在使用 Selenium 自动化测试时遇到了一个问题,即 F12 开发者工具中只能看到字符串形式的 cookie,但是 Selenium 使用的是字典形式的 cookie。

这个问题的解决方法是将字符串形式的 cookie 转换为字典形式的 cookie。可以使用 Python 中的 requests 模块中的 cookiesjar 类来实现这个转换。具体操作如下:

1. 导入 requests 模块:

  
  1.    import requests
  2.    
复制代码

2. 创建一个 cookiejar 对象:

  
  1.    cookie_jar = requests.cookies.cookiejar_from_dict({})
  2.    
复制代码

3. 将字符串形式的 cookie 添加到 cookiejar 对象中:

  
  1.    cookie_str = "cookie1=value1; cookie2=value2"
  2.    cookies = requests.utils.cookiejar_from_dict(requests.utils.dict_from_cookiejar(cookie_jar))
  3.    requests.utils.add_dict_to_cookiejar(cookies, requests.utils.dict_from_cookie_string(cookie_str))
  4.    
复制代码

4. 将 cookiejar 对象转换为字典形式的 cookie:

  
  1.    cookie_dict = requests.utils.dict_from_cookiejar(cookie_jar)
  2.    
复制代码

这样,您就可以将字符串形式的 cookie 转换为字典形式的 cookie,以便在 Selenium 中使用了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-5-17 19:11:33 | 显示全部楼层
isdkz 发表于 2023-5-17 19:08
根据您提供的信息,我猜测您在使用 Selenium 自动化测试时遇到了一个问题,即 F12 开发者工具中只能看到字 ...


                               
登录/注册后可看大图
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-5-17 19:12:43 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-5-17 19:14:11 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-5-17 19:14:43 | 显示全部楼层
isdkz 发表于 2023-5-17 19:14
不用在意这些小细节

最佳都给了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-5-17 19:16:14 | 显示全部楼层
isdkz 发表于 2023-5-17 19:14
我帮你追问了

根据您提供的报错信息,显示  'requests.utils'  模块没有名为  'dict_from_cookie_stri ...

你就不能把联网模式打开吗,driver.findeleementbyxxxxx的我也是服了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-5-17 19:17:51 | 显示全部楼层
歌者文明清理员 发表于 2023-5-17 19:16
你就不能把联网模式打开吗,driver.findeleementbyxxxxx的我也是服了

?这里有这么用吗?这里都没有用到 selenium 好吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-5-17 19:20:15 | 显示全部楼层
isdkz 发表于 2023-5-17 19:17
?这里有这么用吗?这里都没有用到 selenium 好吧

我是说其他关于seleniu的帖子,find_element_by_xxx已经弃用了
还有就是这个令人烦恼的模块版本问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-5-17 19:23:27 | 显示全部楼层
歌者文明清理员 发表于 2023-5-17 19:20
我是说其他关于seleniu的帖子,find_element_by_xxx已经弃用了
还有就是这个令人烦恼的模块版本问题{:10 ...

联网也没有那么好用,还是这样子,只能自己根据经验来判断了

Snipaste_2023-05-17_19-22-36.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-24 05:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表