1. 程式人生 > 實用技巧 >十一、By/登入未授權/測試用例實現流程

十一、By/登入未授權/測試用例實現流程

一、By的類屬性的方式的好處

  • 能夠減少錯誤

  • 能夠提高可讀性

from selenium.webdriver.common.by import By

# login_btn_locator = {"by": "class name", "value": "btn-special"}
login_btn_locator = {"by": By.CLASS_NAME, "value": "btn-special"}
# username_locator = {"by": "name", "value": "phone"}
username_locator = {"by": By.NAME, "
value": "phone"}
"""登入頁面"""
from selenium.webdriver.common.by import By
from middware.pages.index import IndexPage
from middware.handler import HandlerMiddle

class LoginPage:
    """登入"""
    URL  =HandlerMiddle.yaml_data["host"] + "/Index/login.html"
    #登入按鈕,元祖形式
    #login_btn_locator = ("name","btn-special")
#登入按鈕 login_btn_locator = {"by":By.CLASS_NAME,"value":"btn-special"} #使用者名稱 username_locator = {"by":By.NAME,"value":"phone"} #密碼 password_locator = {"by":By.NAME,"value":"password"} #登陸失敗的錯誤資訊 error_msg_locator = {"by":By.CLASS_NAME,"value":"form-error-info"} #
初始化driver def __init__(self,driver): self.driver = driver def get(self): """訪問頁面""" self.driver.get(self.URL) return self def login_fail(self,username,password): # 元素定位+元素操作,輸入使用者名稱和密碼,點選登入進行提交 self.enter_username(username) self.enter_password(password) #self.driver.find_element(*self.login_btn_locator).click() self.driver.find_element(**self.login_btn_locator).click()#點選登入按鈕 return self def login_success(self,username,password): # 元素定位+元素操作,輸入使用者名稱和密碼,點選登入進行提交 self.enter_username(username) self.enter_password(password) self.driver.find_element(**self.login_btn_locator).click()#點選登入按鈕 return IndexPage(self.driver) def enter_username(self,username): "輸入使用者名稱" self.driver.find_element(**self.username_locator).send_keys(username) return self def enter_password(self,password): "輸入密碼" self.driver.find_element(**self.password_locator).send_keys(password) return self def get_error_info(self): "獲取登入失敗的錯誤資訊" return self.driver.find_element(**self.error_msg_locator).text

二、登入未授權(密碼錯誤,提示資訊一閃而過)

場景:在賬號/密碼輸入錯誤的時候,有個彈框,彈出來幾秒就消失了,無法進行元素定位

解決:彈框彈出的時候,暫停JS操作,讓彈框暫停不動。

找到F12 resource ==》pause 暫停js執行

toast彈窗的定位元素: 斷點除錯

  • 在F12的模式下,切換到tab:sources ,

  • 然後執行該情況的用例,執行後點擊pause script execution,

  • 暫停後進行元素定位

注意事項:

  • 通過隱式等待是可以等待元素被載入

  • 但是元素被載入並不表示裡面的動態文辦內容能被獲取到

解決: 1、通過顯示等待visible 2、text檔案定位,也需要用顯示等待的 3、強制等待把握好時間

三、web自動化測試用例實現流程

1.準備前置後置,conftest

2.編寫測試用例,測試用例的函式註釋,docstring

如:登入未授權 測試步驟:

  • 1、登入頁面輸入使用者名稱

  • 2、登入頁面輸入密碼

  • 3、登入頁面點選登入

  • 4、登入頁面獲取未授權資訊

注意:如果有要用到的方法還沒有定義,就到登入頁面的物件中封裝這個方法,然後再回來呼叫 寫明頁面是因為方便封裝方法的時候能找到在哪個頁面

3.根據測試步驟封裝頁面行為

4.呼叫頁面行為,獲取實際結果

5.斷言

四、basepage

頁面行為分為兩種:

  • --某個頁面特定的行為,定位登入按鈕這個元素

  • --每個頁面通用的行為,如定位一個元素

每個頁面的通用方法放在一個公共頁面類中

每個頁面都能直接呼叫,不會因為專案不同發生改變的瀏覽器通用操作的封裝

放在一個類中,類就是basepage

  • --basepage是每個頁面類的父類

  • --basepage思想===》類繼承