工作中遇到这么一个场景:自动化测试登录的时候需要输入动态验证码,由于某些原因,需要从一个已登录的机器上,复制cookie过来,到自动化这边绕过登录。
浏览器的F12里复制出来的cookie内容是文本格式的:
uuid_tt_dd=10_29467992570-1686563381625-248671; log_Id_view=22; pluginId=kfkdboecolemdjodhmhmcibjocfopejo; pluginVersion=3.0.5; pluginUUID=10_28142568173-1689298498020-519600; p_uid=U010000;
这里需要把cookie文本处理为name和value格式的字典形式,这个是Selenium的driver.add_cookie(cookie)函数要求的格式:
cookie = {"name":"uuid_tt_dd", "value":"10_29467992570-1686563381625-248671"}
上代码
# 首次打开页面
self.driver.get(self.url)
# 从浏览器F12中复制过来的cookie
cookies_text = """
uuid_tt_dd=10_29467992570-1686563381625-248671; log_Id_view=22; pluginId=kfkdboecolemdjodhmhmcibjocfopejo; pluginVersion=3.0.5; pluginUUID=10_28142568173-1689298498020-519600; p_uid=U010000;
"""
# 处理字符串,构建cookie字典
cookie_tmp_list = cookies_text.strip().split(";")
cookie_list = []
for cookie_tmp in cookie_tmp_list:
cookie_value_list = cookie_tmp.strip().split("=")
cookie_name = cookie_value_list[0]
if len(cookie_value_list) ==1:
cookie_value = ''
else:
cookie_value = cookie_value_list[1]
cookie = {"name":cookie_name, "value":cookie_value}
cookie_list.append(cookie)
# 删除原有cookie
self.driver.delete_all_cookies()
# 循环添加新cookie
for cookie in cookie_list:
print(type(cookie))
self.driver.add_cookie(cookie)
cookies = self.driver.get_cookies()
print(cookies)
# 再次打开业务url页面,不会跳转到登录页面了
self.driver.get(self.url)
time.sleep(30)
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
qq群号:485187702【暗号:csdn11】
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】