工作中遇到这么一个场景:自动化测试登录的时候需要输入动态验证码,由于某些原因,需要从一个已登录的机器上,复制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)函数要求的格式:
python
cookie = {"name":"uuid_tt_dd", "value":"10_29467992570-1686563381625-248671"}
上代码
python
# 首次打开页面
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)