selenium-PageObject模式

一,什么是Page Object模式

  Page Object 見名知意铣墨,就是頁面對象,并將頁面元素定位方法和元素操作進行分離。

  在實際自動化測試實戰(zhàn)過程中金刁,我們一般對腳本的實現(xiàn)分為三層:

  (1)對象層: 用于存放頁面元素定位和控件操作

  (2)邏輯層: 則是一些封裝好的功能用例模塊

? ? ? ?(3)業(yè)務(wù)層: 則是我們真正的測試用例的操作部分

二,PageObject 的優(yōu)點

  減少代碼冗余

  業(yè)務(wù)和實現(xiàn)分離

  降低代碼維護成本

三,PageObject 的六大原則

? ? ? ? 1,The public methods represent the services that the page offers

????????????公共方法表示頁面提供的服務(wù)

? ? ? ? ?2,Try not to expose the internals of the page

????????????不要暴露頁面的細(xì)節(jié)

? ? ? ? 3,Generally don't make assertions

????????????Page設(shè)計中不要出現(xiàn)斷言,應(yīng)該寫在測試用例類中

? ? ? ? 4,Methods return other PageObjects

????????????方法應(yīng)該返回其他的Page對象

? ? ? ? 5,Need not represent an entire page

????????????不要去代表整個page织咧,如果一個頁面中有很多功能胀葱,只需要對重點功能封裝方法即可

? ? ? ? 6,Different results for the same action are modeled as different methods

????????????不同的結(jié)果返回不同的方法,不同的模式

四,原則解讀(很重要)

? ? (1)方法意義:

? ? ? ? ? ? 1.用公共的方法代表UI所提供的功能

? ? ? ? ? ? 2.方法應(yīng)該返回其他的PageObject或者返回用于斷言的數(shù)據(jù)

? ? ? ? ? ? 3.同樣的行為不同的結(jié)果可以建模為不同的方法

? ? ? ? ? ? 4.不要在方法內(nèi)加斷言

? ? (2)字段意義:

? ? ? ? ? ? 1.不要暴露頁面內(nèi)部元素給外部

? ? ? ? ? ? 2.不要建模UI內(nèi)的所有元素

四,示例:在企業(yè)微信添加成員(具體案例實現(xiàn))

步驟一:梳理測試用例;

????我們這里進行自動化的用例:

? ? ? ????? 用例1:在首頁點擊添加成員,填寫完成員信息后,點擊保存,添加成員成功;

? ? ? ? ????用例2:在通訊錄點擊添加成員,填寫完成員信息后,點擊保存,添加成員成功;

步驟二:構(gòu)建PO模型

? ? 根據(jù)步驟一的用例,可以畫出對應(yīng)的時序圖,從而構(gòu)建PO模型:

? ? ? ? 1.黃色方塊代表一個類;

? ? ? ? 2.每條線代表這個頁面提供的操作(即要實現(xiàn)的方法);

? ? ? ? 3.箭頭的開始端為開始頁面

? ? ? ? 4.箭頭的末尾端為跳轉(zhuǎn)頁面

步驟三:構(gòu)造頁面相關(guān)類和方法

? ? ? ?根據(jù)步驟二的時序圖,構(gòu)建頁面相關(guān)的類和放過, 實現(xiàn)暫時為空,如下圖:

步驟四:編寫測試用例

????根據(jù)業(yè)務(wù)邏輯編寫:

? ? 從圖上我們看出,每個頁面都需要實例化,當(dāng)page類多了之后,會多很多代碼,很不科學(xué):

? ?我們需要在對應(yīng)page類的方法中return直接實例化我們需要的末端頁面;

? ? 這樣我們就可以實現(xiàn)鏈?zhǔn)秸{(diào)用:

步驟五:填充具體實現(xiàn)

這一步需要取具體完善PO模型中的具體實現(xiàn)

1,首先需要解決不同pageobject之間不能重復(fù)打開瀏覽器的問題,他們需要使用同一個driver;

? ? 我們可以寫一個基礎(chǔ)類,其他類繼承基礎(chǔ)類,只在基礎(chǔ)類中打開一次瀏覽器,其他子類直接復(fù)用:

? 2,根據(jù)步驟四鏈?zhǔn)秸{(diào)用的邏輯依次寫好類中的具體內(nèi)容:

??? Homepage:

? MembersPage:

AddmembersPage:

3,更改斷言數(shù)據(jù):

4,運行用例:

步驟六:優(yōu)化用例

?? 在前面的五步其實就已經(jīng)達到了我們的目的,但是我們還可以進行優(yōu)化,使代碼更有條例,更易于維護:

????? (1)封裝樣板代碼

?????? 之前都需要在每一個page類都需要引入from selenium.webdriver.common.byimport By,我們可以把查找元素提取出來封裝一個基礎(chǔ)方法:

????? 這樣HomePage就可以變?yōu)?

?????? 同時其他page類不改也支持;

?? (2)提取頁面元素

????? 我們可以把頁面元素全都提取出來,可以直接放在類變量,也可以維護在yaml文件里,或者放在其他類型文件,這里我放在類里面:

????? 添加成員的輸入項被抽離出來以后,用例變?yōu)?

(3)添加起始頁的url

?? 我們按照上面的思路編寫用例二:

? 但是運行卻失敗了,我們看報錯信息是因為找不到元素,實際上實例化memberspage頁面沒有打開通訊錄頁面

? 要解決這個問題,我們可以添加起始頁的url:

? 更改基礎(chǔ)類:

?? MembersPage配置自己的類變量:

?再運行時,就可以了;

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末笙蒙,一起剝皮案震驚了整個濱河市抵屿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捅位,老刑警劉巖轧葛,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異艇搀,居然都是意外死亡尿扯,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門焰雕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衷笋,“玉大人,你說我怎么就攤上這事矩屁”僮冢” “怎么了爵赵?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長泊脐。 經(jīng)常有香客問我空幻,道長,這世上最難降的妖魔是什么容客? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任秕铛,我火速辦了婚禮,結(jié)果婚禮上缩挑,老公的妹妹穿的比我還像新娘但两。我一直安慰自己,他們只是感情好供置,可當(dāng)我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布镜遣。 她就那樣靜靜地躺著,像睡著了一般士袄。 火紅的嫁衣襯著肌膚如雪悲关。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天娄柳,我揣著相機與錄音寓辱,去河邊找鬼。 笑死赤拒,一個胖子當(dāng)著我的面吹牛秫筏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播挎挖,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼这敬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蕉朵?” 一聲冷哼從身側(cè)響起崔涂,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎始衅,沒想到半個月后冷蚂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡汛闸,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年蝙茶,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诸老。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡隆夯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蹄衷,我是刑警寧澤苞尝,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站宦芦,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏轴脐。R本人自食惡果不足惜调卑,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望大咱。 院中可真熱鬧恬涧,春花似錦、人聲如沸碴巾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厦瓢。三九已至提揍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間煮仇,已是汗流浹背劳跃。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留浙垫,地道東北人刨仑。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像夹姥,于是被迫代替她去往敵國和親杉武。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內(nèi)容