webUI自動化之獲取cookies,添加cookies實現免登錄


前言:在測試過程中,初了登錄的測試用例外,很多測試用例是不需要每次都進行一次登錄操作的。
這個時候,我們只需要獲取到cookies后,將其放入一個文件中,打開目標url時,將文件中的cookies獲取並添加到瀏覽器驅動即可。

一、實現一次登錄,獲取cookies,將此功能做如下封裝:

from testcases.test_login import LoginPage
from common.get_yaml import get_yaml_data
from selenium import webdriver
import os
import time
import json

# cookies的yaml文件路徑
cookies_yaml_path = os.path.dirname(os.path.dirname(__file__)) + "\\cookies.yaml"


class GetCookies:
    @classmethod
    def get_cookie(cls, driver):
        # 實例化登錄頁面對象:LoginPage對象
        lp = LoginPage(driver)
        # 調用登錄頁的登錄動作,傳入賬號密碼
        lp.action_login("admin", "111111")
        time.sleep(2)
        # 獲取cookies並寫入文件
        cookies = driver.get_cookies()
        with open(cookies_yaml_path, "w")as f:
            json.dump(cookies, f)

核心思想和步驟:
1、建一個存放cookies的yaml文件,並獲得其路徑。
2、實現登錄。
3、登錄后使用driver.get_cookies()獲取cookies內容。
4、with open(cookies的yaml文件路徑,“w”寫模式),調用json模塊將其序列化並寫入文件(json模塊的dump方法)。

獲取到cookies后,下一步就是進行添加cookies,將此功能做如下封裝。

    def open_url(cls, url, driver):
        # 清除瀏覽器cookie
        driver.delete_all_cookies()
        # 從cookies.yaml文件中獲取最新的cookie並加入瀏覽器中
        cookies_str = get_yaml_data("cookies.yaml", os.path.dirname(os.path.dirname(__file__)) + "\\")for cookie in cookies_str:
            driver.add_cookie(cookie)
        # 打開需要測試的頁面url
        driver.get(url)

核心思想和步驟:
1、driver.delete_all_cookies(),清楚瀏覽器的cookies。
2、從cookies的yaml文件中獲取cookies文本。
3、利用for循環將cookies添加到瀏覽器,使用driver.add_cookie().
4、打開目標url。

 

注意:當我們獲取到了cookies后,需要打開目標url之前,先打開一個我們測試的網頁(相同domian的網頁,通常打開首頁即可)
不然的話,會報如下錯誤:

selenium.common.exceptions.InvalidCookieDomainException: Message: Document is cookie-averse

 

 如上圖,在調用封裝的open_url前,打開相同domain的url,就可以避免如上報錯。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM