selenium筆記17:PO設(shè)計(jì)模型

1冠句、PO模式詳解

PO/POM :Page Object Model的簡(jiǎn)稱(chēng)听隐。按照面向?qū)ο蟮乃枷刖猓秧?yè)面看做對(duì)象剃执,把里面的元素進(jìn)行封裝

  • 一種設(shè)計(jì)模式,主要用于web UI自動(dòng)化框架設(shè)計(jì)中
  • 被測(cè)頁(yè)面作為頁(yè)面對(duì)象懈息,其中包含元素定位和元素操作的方法肾档,將頁(yè)面對(duì)象和真實(shí)網(wǎng)站頁(yè)面一一對(duì)應(yīng)


    image.png
  • 作用:測(cè)試頁(yè)面與測(cè)試腳本進(jìn)行分離,即把頁(yè)面封裝成類(lèi)漓拾,供測(cè)試腳本調(diào)用
  • 分層機(jī)制:讓不同層去做不同類(lèi)型的事情阁最,讓代碼結(jié)構(gòu)清晰,增加復(fù)用性

2骇两、PO模式優(yōu)缺點(diǎn)

  • 優(yōu)點(diǎn):
    提高代碼的可讀性
    減少代碼的重復(fù)
    增加復(fù)用性
    提高代碼的可維護(hù)性,特別是針對(duì)UI界面頻繁的項(xiàng)目
  • 缺點(diǎn):
    造成項(xiàng)目結(jié)構(gòu)比較復(fù)雜姜盈,因?yàn)楦鶕?jù)流程進(jìn)行了模塊化處理

3低千、PO模式示例

  • 用戶注冊(cè)
  1. 創(chuàng)建class,即登錄頁(yè)面對(duì)象類(lèi)
  2. 類(lèi)屬性:用戶注冊(cè)框、密碼框、注冊(cè)按鈕的element
  3. 類(lèi)方法:各種元素操作
    a. 方法中對(duì)selenium進(jìn)行二次封裝
    b. 用例層直接調(diào)用其中方法即可
  4. 測(cè)試層從頁(yè)面操作層調(diào)用其中方法示血,實(shí)現(xiàn)用例和元素方法的分離
#-*-coding:utf-8-*-
"""
@author:百草
@file:testcase_selenium.py
@time:2023/08/02 14:52
"""
from selenium import webdriver
import unittest
import time
from selenium.webdriver.common.by import By


class TestCaseDemo(unittest.TestCase):
    def setUp(self):
        # 前置
        self.driver=webdriver.Chrome()

    def test_01_login(self):
        self.driver.get("https://www.baidu.com/")
        self.driver.find_element(By.ID,"u1").find_element(By.NAME,"tj_login").click() # 登錄
        self.driver.implicitly_wait(10) # 隱式等待10秒
        self.driver.find_element(By.ID,"TANGRAM__PSP_11__userName").send_keys("2944717202@qq.com") # 用戶名/手機(jī)號(hào)/郵箱
        # self.driver.find_element(By.NAME, "password").send_keys("***@qq.com") # 密碼  # name非唯一的
        # selenium.common.exceptions.ElementNotVisibleException: Message: element not visible
        self.driver.find_element(By.ID, "TANGRAM__PSP_11__password").send_keys("***")  # 密碼
        time.sleep(2)  # 等待以便test
        self.driver.find_element(By.ID,"TANGRAM__PSP_11__submit").submit()  # 登錄 (submit與click?)
        time.sleep(20)  # 等待以便test
        # self.assertIn() # 斷言
        
        # 其他測(cè)試場(chǎng)景:更換賬號(hào)或密碼等多組數(shù)據(jù)
        # 線型腳本:代碼冗余棋傍;可維護(hù)性&可擴(kuò)展性低
        # => 對(duì)應(yīng)頁(yè)面封裝成一個(gè)對(duì)象/類(lèi),增加復(fù)用性难审、可維護(hù)性瘫拣、可擴(kuò)展性

    def tearDown(self):
        # 后置
        self.driver.quit() # 關(guān)閉瀏覽器,同時(shí)關(guān)閉driver
        # self.driver.close() # 僅關(guān)閉瀏覽器

# OSError: [WinError 6] 句柄無(wú)效告喊。
# 原因dirver沒(méi)有關(guān)閉麸拄,或使用driver.close()

# win批量關(guān)閉chromedriver
# taskkill /F /im chromedriver.exe
PO模式分三層

base:封裝每個(gè)頁(yè)面中相同的屬性和方法,如:元素定位黔姜、輸入拢切、點(diǎn)擊
pageobject:每一個(gè)頁(yè)面定義一個(gè)類(lèi),類(lèi)中包含具體元素和操作元素的方法
testcase:業(yè)務(wù)流程及測(cè)試數(shù)據(jù)


參考

  1. PO模式簡(jiǎn)介
  2. 軟件測(cè)試必學(xué)-自動(dòng)化測(cè)試框架之PO模式設(shè)計(jì)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末秆吵,一起剝皮案震驚了整個(gè)濱河市淮椰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌纳寂,老刑警劉巖主穗,帶你破解...
    沈念sama閱讀 219,539評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異毙芜,居然都是意外死亡黔牵,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門(mén)爷肝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)猾浦,“玉大人,你說(shuō)我怎么就攤上這事灯抛〗鹕猓” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,871評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵对嚼,是天一觀的道長(zhǎng)夹抗。 經(jīng)常有香客問(wèn)我,道長(zhǎng)纵竖,這世上最難降的妖魔是什么漠烧? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,963評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮靡砌,結(jié)果婚禮上已脓,老公的妹妹穿的比我還像新娘。我一直安慰自己通殃,他們只是感情好度液,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般堕担。 火紅的嫁衣襯著肌膚如雪已慢。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,763評(píng)論 1 307
  • 那天霹购,我揣著相機(jī)與錄音佑惠,去河邊找鬼。 笑死齐疙,一個(gè)胖子當(dāng)著我的面吹牛膜楷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播剂碴,決...
    沈念sama閱讀 40,468評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼把将,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了忆矛?” 一聲冷哼從身側(cè)響起察蹲,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎催训,沒(méi)想到半個(gè)月后洽议,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,850評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡漫拭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評(píng)論 3 338
  • 正文 我和宋清朗相戀三年亚兄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片采驻。...
    茶點(diǎn)故事閱讀 40,144評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡审胚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出礼旅,到底是詐尸還是另有隱情膳叨,我是刑警寧澤,帶...
    沈念sama閱讀 35,823評(píng)論 5 346
  • 正文 年R本政府宣布痘系,位于F島的核電站菲嘴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏汰翠。R本人自食惡果不足惜龄坪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望复唤。 院中可真熱鬧健田,春花似錦、人聲如沸苟穆。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,026評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)雳旅。三九已至跟磨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間攒盈,已是汗流浹背抵拘。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,150評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留型豁,地道東北人僵蛛。 一個(gè)月前我還...
    沈念sama閱讀 48,415評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像迎变,于是被迫代替她去往敵國(guó)和親充尉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評(píng)論 2 355

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