十一、By/登入未授權/測試用例實現流程
阿新 • • 發佈:2020-10-20
一、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思想===》類繼承