主頁(yè) > 知識(shí)庫(kù) > Python自動(dòng)化測(cè)試PO模型封裝過(guò)程詳解

Python自動(dòng)化測(cè)試PO模型封裝過(guò)程詳解

熱門(mén)標(biāo)簽:梅州外呼業(yè)務(wù)系統(tǒng) 高德地圖標(biāo)注是免費(fèi)的嗎 洪澤縣地圖標(biāo)注 無(wú)錫客服外呼系統(tǒng)一般多少錢(qián) 老人電話(huà)機(jī)器人 大連crm外呼系統(tǒng) 百度地圖標(biāo)注位置怎么修改 地圖標(biāo)注視頻廣告 北京電信外呼系統(tǒng)靠譜嗎

在自動(dòng)化中, Selenium 自動(dòng)化測(cè)試中有一個(gè)名字經(jīng)常被提及 PageObject( 思想與面向?qū)ο蟮奶卣飨?同 ) ,通常 PO 模型可以大大提高測(cè)試用例的維護(hù)效率

優(yōu)點(diǎn):可重用,業(yè)務(wù)和對(duì)象分離,代碼結(jié)構(gòu)清晰,方便代碼維護(hù)

核心要素

1. 在 PO 模式中抽離封裝集成一個(gè)BasePage 類(lèi),該基類(lèi)應(yīng)該擁有一個(gè)只實(shí)現(xiàn) webdriver 實(shí)例的屬性

2. 每一個(gè) page 都繼承 BasePage ,通過(guò) driver 來(lái)管理本 page 中元素,將 page 中的操作封裝成一個(gè)個(gè)方法

3.TestCase 繼承 unittest.Testcase 類(lèi),并依賴(lài) page 類(lèi),從而實(shí)現(xiàn)相應(yīng)的測(cè)試步驟

PO 實(shí)現(xiàn)進(jìn)入百度頁(yè)面輸入數(shù)據(jù)后進(jìn)入下一個(gè)頁(yè)面

組織代碼

1 :實(shí)現(xiàn) BasePage

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains #鼠標(biāo)操作
class BasePage():
    '''
    BasePage封裝所有界面都公用的方法。
    例如driver,find_element等
    '''
    # 實(shí)例化BasePage類(lèi)時(shí),事先執(zhí)行的__init__方法,該方法需要傳遞參數(shù)
    def __init__(self,driver,url):
        self.driver = driver
        self.base_url = url
    # 進(jìn)入網(wǎng)址
    def get(self):
        self.driver.get(self.base_url)
    #元素定位,替代八大定位
    def get_element(self,*locator):
        return self.driver.find_element(*locator)
    #點(diǎn)擊
    def left_click(self,*locator):
        ActionChains(self.driver).click(self.get_element(*locator)).perform()
    #輸入
    def send_text(self,text,*locator):
        self.driver.find_element(*locator).send_keys(text)
    #清除
    def clear_text(self, *locator):
        self.driver.find_element(*locator).clear()
    # 表單切換
    def switch_iframe(self,*locator):
        self.driver.switch_to.frame(self.driver.find_element(*locator))
    #窗口切換
    def switch_window(self,n):
        self.driver.switch_to.window(self.driver.window_handles[n])

2 :實(shí)現(xiàn) SearchPage

from selenium.webdriver.common.by import By
from base.base_page import BasePage
class SearchOne(BasePage):
    def __init__(self,driver,url):
        BasePage.__init__(self,driver,url)
    #進(jìn)入百度
    def open_baidu(self):
        self.get()
    #輸入數(shù)據(jù)
    def input_search_content(self,text):
        self.send_text(text,By.ID,"kw")
    # 點(diǎn)擊按鈕
    def click_baidu_search(self):
        self.left_click(By.ID, "su")
    def click_open_hao(self):
        self.left_click(By.XPATH,".//*[@id='1']/h3/a[1]")

3 :實(shí)現(xiàn) TestCase

import unittest
from selenium import webdriver
from page.page_one import SearchOne
from page.page_two import SearchTwo
class BaiBu(unittest.TestCase):
    @classmethod
    def setUpClass(cls) -> None:
        cls.driver = webdriver.Firefox()
        cls.driver.implicitly_wait(10)
    def test001(self):
        url="http://www.baidu.com"
        s = SearchOne(self.driver,url)
        s.open_baidu()
        s.input_search_content("123")
        s.click_baidu_search()
        s.click_open_hao()
        self.driver.switch_to.window(self.driver.window_handles[1])
    def test002(self):
        s=SearchTwo(self.driver,"")
        s.open_baidu_map()
    def tearDown(self) -> None:
    #      self.driver.quit()
        pass
if __name__ == '__main__':
    unittest.main()

PO 模式的優(yōu)點(diǎn)

1:PO 提供了一種業(yè)務(wù)流程與頁(yè)面元素操作分離的模式,這使得測(cè)試代碼變得更加清晰

2 :頁(yè)面對(duì)象與用例分離,使得我們更好的復(fù)用對(duì)象

3 :可復(fù)用的頁(yè)面方法代碼會(huì)變得更加優(yōu)化

4 :更加有效的命令方式使得我們更加清晰的知道方法所操作的 UI 元素

以上就是Python自動(dòng)化測(cè)試PO模型封裝的詳細(xì)內(nèi)容,更多關(guān)于Python自動(dòng)化測(cè)試PO模型的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • python中Task封裝協(xié)程的知識(shí)點(diǎn)總結(jié)
  • Python面向?qū)ο蠓庋b繼承和多態(tài)示例講解
  • Python 調(diào)用C++封裝的進(jìn)一步探索交流
  • Python如何實(shí)現(xiàn)Paramiko的二次封裝
  • 使用Python封裝excel操作指南
  • python excel和yaml文件的讀取封裝
  • python 使用paramiko模塊進(jìn)行封裝,遠(yuǎn)程操作linux主機(jī)的示例代碼
  • Python之根據(jù)輸入?yún)?shù)計(jì)算結(jié)果案例講解

標(biāo)簽:怒江 長(zhǎng)春 吉林 清遠(yuǎn) 泉州 洛陽(yáng) 安慶 岳陽(yáng)

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python自動(dòng)化測(cè)試PO模型封裝過(guò)程詳解》,本文關(guān)鍵詞  Python,自動(dòng)化,測(cè)試,模型,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python自動(dòng)化測(cè)試PO模型封裝過(guò)程詳解》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Python自動(dòng)化測(cè)試PO模型封裝過(guò)程詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章