工作中遇到这么一个场景:自动化测试登录的时候需要输入动态验证码,由于某些原因,需要从一个已登录的机器上,复制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中复制过来的cookiecookies_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)# 删除原有cookieself.driver.delete_all_cookies()# 循环添加新cookiefor 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)