1. 程式人生 > 其它 >UI自動化測試中的PO模式

UI自動化測試中的PO模式

Page Object(簡稱PO模式)
在ui自動化測試中,通常分為這幾步:

  1. 編寫用例
  2. 元素定位
  3. 操作定位的元素(例如:send_keys() click())
  4. 執行用例

假設:
case01:去百度搜索籃球

def search_basketball(self):   
    self.dr.get("https://www.baidu.com")    
    self.dr.find_element(By.ID, "kw").send_keys("籃球")    
    self.dr.find_element(By.ID, "su").click()

case02:去百度搜索足球

def search_football(self):   
    self.dr.get("https://www.baidu.com")    
    self.dr.find_element(By.ID, "kw").send_keys("足球")    
    self.dr.find_element(By.ID, "su").click()

case03:去百度搜索排球

def search_volleyball(self):   
    self.dr.get("https://www.baidu.com")    
    self.dr.find_element(By.ID, "kw").send_keys("排球")    
    self.dr.find_element(By.ID, "su").click()

這時候我們會發現,在這三條用例中,我們分別進行了三次定位和操作。假設我們有100條case,在某一次的迭代中我們的定位方式失效的話,那我們就要分別修改100次(當然我知道pycharm中有替換這一說);總而言之,這種寫法會增加我們的維護成本,程式碼也會顯得過於臃腫。

Page Object的概念:把元素定位與元素操作進行分離。當元素髮生變化我們只需去維護元素定位,在執行用例的時候,也不需要去關心元素是如何定位的

BasePage也就相當於是我們的基本頁面,相當於封裝了web的頭和體
Page頁相當於所有頁面的管理者,主要用於拿到具體的某個頁面 eg:Page01、Page02、Page03、PageN

  • Page01:獲取其裡面的元件,進行元素定位(Page02、Page03同理)

component庫:主要返回各個元件中所要定位的元素,並將該模組匯入所屬的page頁中
TestCase:將封裝好的元素進行拼裝,在這一層進行操作

這也就是po設計模式的分層思想

結語

page object是UI自動化測試專案開發實踐的最佳模式之一,介面互動清晰,貼合測試用例的實現性,也更便於後期的維護。
感謝韓老師 thx~