一域那、PO模型介紹
在自動化中辱姨,Selenium自動化測試中有一個名字經(jīng)常被提及PageObject(思想與面向?qū)ο蟮奶卣飨嗤?产还,通常PO模型可以大大提高測試用例的維護(hù)效率
優(yōu)點(diǎn):重用施禾,業(yè)務(wù)和對象分離参袱,代碼結(jié)構(gòu)清晰,方便代碼維護(hù)
二浑彰、 PageObject設(shè)計(jì)模式
三恭理、PO的核心要素
在PO模式中抽離封裝集成一個BasePage類拯辙,該基類應(yīng)該擁有一個只實(shí)現(xiàn)webdriver實(shí)例的屬性
每一個page都繼承BasePage郭变,通過driver來管理本page中元素,將page中的操作封裝成一個個方法
TestCase繼承unittest.Testcase類涯保,并依賴page類诉濒,從而實(shí)現(xiàn)相應(yīng)的測試步驟
四、非PO實(shí)現(xiàn)
4.1 代碼展示
4.2 代碼分析
不同的運(yùn)行腳本環(huán)境夕春,瀏覽器不同:驅(qū)動webdriver.Firefox()可以剝離
請求地址的變化(生產(chǎn)環(huán)境和測試環(huán)境):url =http://www.baidu.com可以剝離
操作元素時未荒,常常要等待元素加載完成方可進(jìn)行操作:可以把webdriver提供的find_element*方法封裝,在元素操作前及志,先判斷元素是否可以操作
實(shí)際測試場景中片排,可能有多個測試場景寨腔,如果每個測試場景都需要維護(hù)url,瀏覽器驅(qū)動,元素定位等,效率會非常低
因此基于以上分析,是否可以設(shè)計(jì)一個所有測試界面(selenium本身是B/S系統(tǒng)開展測試)的基類率寡,來維護(hù)公共的方法迫卢,此處定義名字為BasePage.py,用于存放頁面公共方法及webdriver原有方法二次封裝等。
五冶共、PO實(shí)現(xiàn)
5.1 實(shí)現(xiàn)BasePage
5.1.1 BasePage代碼實(shí)現(xiàn)
5.2 實(shí)現(xiàn)SearchPage
5.2.1 SearchPage代碼實(shí)現(xiàn)
5.3 實(shí)現(xiàn)TestCase
5.3.1 TestCase代碼
六乾蛤、組織代碼
七、總結(jié)
PO設(shè)計(jì)模式中的BasePage基類對應(yīng)案例中的BasePage.py文件
PO模式中的pages中的案例顯示Search.py
PO模式設(shè)計(jì)中TestCase對應(yīng)案例中的TestCase.py
八捅僵、PO模式的優(yōu)點(diǎn)
PO提供了一種業(yè)務(wù)流程與頁面元素操作分離的模式家卖,這使得測試代碼變得更加清晰
頁面對象與用例分離,使得我們更好的復(fù)用對象
可復(fù)用的頁面方法代碼會變得更加優(yōu)化
更加有效的命令方式使得我們更加清晰的知道方法所操作的UI元素