工作中遇到這么一個場景:自動化測試登錄的時候需要輸入動態驗證碼,由于某些原因,需要從一個已登錄的機器上,復制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)