WebUI自動(dòng)化測(cè)試_PO模式再升級(jí)CPO模式

大家好,我是金魚座,一個(gè)走在測(cè)試領(lǐng)域這片藍(lán)海中, 蹉跎前行的技術(shù)渣渣,唯有一直走下去,也許能改變點(diǎn)什么,加油!

最近公司老大需要讓我給一個(gè)項(xiàng)目做自動(dòng)化的設(shè)計(jì), 本身自己對(duì)于自動(dòng)化實(shí)戰(zhàn)經(jīng)驗(yàn)不夠,但是由于長(zhǎng)期泡群,也接觸過(guò)一些相關(guān)的設(shè)計(jì)思路,所以最早學(xué)習(xí)的審核自己也簡(jiǎn)單的自學(xué)過(guò)幾個(gè)自動(dòng)化腳本
詳見(jiàn):
線性腳本篇:http://www.itdecent.cn/p/dc14cb7e5570
簡(jiǎn)單PO篇:http://www.itdecent.cn/p/8384a6985704
改版PO篇:http://www.itdecent.cn/p/06da75c65a5b
由于文章是在學(xué)習(xí)的時(shí)期寫的,對(duì)于大N,大家可以忽略, 不過(guò)對(duì)于初學(xué)者可以簡(jiǎn)單看看,也算是一種理解思路

由于之前用的是py2和unittest,而自己現(xiàn)在日常的代碼都是py3和pytest,所以決定重新設(shè)計(jì),下面說(shuō)下自己的對(duì)于PO的一次簡(jiǎn)單升級(jí)CPO(姑且自己這么叫)

PO模式
PO我們都知道是PageObject的設(shè)計(jì)思路,通過(guò)page對(duì)象對(duì)頁(yè)面操作的封裝,結(jié)合適當(dāng)?shù)膮?shù)化處理,做到用例層和邏輯層與對(duì)象層的分離。方便用戶后期對(duì)數(shù)據(jù)和用例的處理

CPO模式
CPO是我自己認(rèn)知的簡(jiǎn)稱(Component PageObject)看這個(gè)單詞大家應(yīng)該就知道組件化思路,再seleniumApi和Page之間增加一層封裝Component層

為什么基于這種考慮?
普通的PO模式,我們最喜歡的就是增加一個(gè)BasePage,然后所有的Page來(lái)繼承該P(yáng)age類所有selenium封裝,這種方式本身沒(méi)有任何問(wèn)題,但是我個(gè)人的感覺(jué)就是有個(gè)比較奇怪的問(wèn)題,就是這種po模式下,實(shí)際上再其他page頁(yè)面中還是會(huì)參雜的使用selenium的方法,這讓我感覺(jué)體驗(yàn)很不好,并且無(wú)法很好的對(duì)page中的操作層有個(gè)很好的操作表達(dá), 比如:

# 登錄到一個(gè)平臺(tái)
loginpage一般的處理代碼:
class LoginPage(BasePage):
    #輸入用戶名
    def type_username(self,username):
        self.find_element(*self.username_loc).clear()
        self.find_element(*self.username_loc).send_keys(username)

那么如果是我所謂的CPO的模式是什么樣子的呢?
“見(jiàn)文知意” 是我期望的,也是我們?nèi)粘?duì)基礎(chǔ)api或者方法做二次封裝的一個(gè)目的,那么基于這種考慮,我考慮一種將人的視角,轉(zhuǎn)移到人操作的對(duì)象的視角,比如人點(diǎn)擊一個(gè)按鈕,實(shí)際本質(zhì)是這個(gè)按鈕的元素觸發(fā)了點(diǎn)擊事件,基于這種考慮, 我在pageobjec層上面增加了一個(gè)組件層,主要用來(lái)封裝各種操作對(duì)象,讓實(shí)際編寫page類和case的人員完全脫離seleniumApi,達(dá)到更高的代碼理解速度和編寫速度,如下代碼:

class LoginP():
    def input_name(self, name):
        Input(self.driver).input_text(LoginP.user_loc, name)

    def input_search_user(self, value):
        Input(self.driver).input_text(UserP.search_loc, value)
        KeyBoard(self.driver).Enter(UserP.search_loc)

觀察上面的兩種對(duì)比:
CPO模式再使用難度上面大大減少,一個(gè)普通的測(cè)試就可以很快的對(duì)Page類進(jìn)行封裝

那么CPO有哪些優(yōu)勢(shì)?

  1. 操作員不需要對(duì)selenium的基本知識(shí)有相關(guān)了解
  2. page的操作流程再定位期間就可以無(wú)壓力的對(duì)邏輯操作進(jìn)行編寫
  3. 可以了解到當(dāng)前頁(yè)面的涉及的html操作元素,具有提示作用

總結(jié): 這個(gè)方式也許不是最好的, 但是就自己使用期間明顯能夠感受到page類操作的效率大大提示,因?yàn)楫?dāng)我每次操作一個(gè)業(yè)務(wù)流程時(shí),更多的時(shí)候都是需要進(jìn)行元素定位,每個(gè)定位元素都是具有標(biāo)簽信息的,我們可以一般定位一邊無(wú)腦的編寫操作流程,這也許也是一種享受。

最后編輯于
?著作權(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)容