Selenium Web Driver自動(dòng)化測(cè)試(java版)系列下半部分(32) - 用數(shù)據(jù)驅(qū)動(dòng)搭建測(cè)試框架雛形(5) - 分離Page Objects,修改測(cè)試結(jié)果返回值

上篇我們給框架設(shè)計(jì)了一個(gè)配置文件,而且利用java反射機(jī)制優(yōu)化了控制類,框架又進(jìn)步了一些。這次我們可以再改幾個(gè)小地方。首先看LoginPage.java和EmpPage.java這兩個(gè)文件,它們都有g(shù)etPageObjects()方法,里面有每個(gè)page object的獲取過程:

我們可以把這一步單獨(dú)拿出來,讓它根據(jù)object名稱來自動(dòng)判斷需要用哪一個(gè)定位器,這樣就不用總想著到底需要是id還是name還是xpath了。先根據(jù)object的定位器修改一下object名稱,加上后綴"_定位器":

loginPage.properties:

empPage.properties:

接著就該寫判斷步驟了,在com.testalliance.hrsystem.pageobj中新建Objects.java,復(fù)制如下代碼:

這段代碼不難理解,接受兩個(gè)參數(shù),一個(gè)是object名稱,另一個(gè)是object值,每個(gè)傳進(jìn)來的object信息都會(huì)進(jìn)行自動(dòng)判斷。

接著修改LoginPage.java和EmpPage.java:

LoginPage.java:

其實(shí)就是把定位過程放進(jìn)每一個(gè)小的操作方法中,我還把getObjects()加了個(gè)參數(shù),這樣文件路徑就可以傳進(jìn)來了。同理,EmpPage.java可以改成:

這樣,page object的獲取過程就被單獨(dú)提取出來了,我們不需要總想著到底應(yīng)該用哪種定位器了。

第二個(gè)我想修改的是測(cè)試結(jié)果返回值。目前所有的測(cè)試類都是里面都用Result = "TEST PASS"作為測(cè)試結(jié)果,比如TCLogin1.java:

image

不說專業(yè)不專業(yè),每次寫文字"TEST PASS"也容易出錯(cuò)不是?我們可以在測(cè)試類里把它們用整型0或1代替,統(tǒng)一返回用字符串表示。當(dāng)然,你也還可以繼續(xù)用布爾類型true和false,不過整型也是很多人常用的,我演示一下,以TCLogin1.java為例:

表示測(cè)試結(jié)果的result變量初始值為0,如果最后執(zhí)行完畢是Pass則改成1。按照這個(gè)改變把另外幾個(gè)測(cè)試類也改一下,把結(jié)果返回給TestRunner.java處理:

執(zhí)行一下,測(cè)試通過。這篇的修改就到這兒。注意,現(xiàn)在TestRunner.java里面還有bug,舉個(gè)例子,程序進(jìn)入try語句后如果在執(zhí)行測(cè)試方法時(shí)拋出了異常,dm.cleanUp()還能執(zhí)行到嗎?就執(zhí)行不到了?;蛟S執(zhí)行結(jié)果都無法被打印出來,所以我們還要繼續(xù)修改。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容