最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python自動化測試PO模型封裝過程詳解

 更新時間:2021年06月21日 19:19:26   作者:.客.  
在 PO 模式中抽離封裝集成一個BasePage 類,該基類應(yīng)該擁有一個只實現(xiàn) webdriver 實例的屬性,通常情況下PO 模型可以大大提高測試用例的維護效率

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

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

核心要素

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

2. 每一個 page 都繼承 BasePage ,通過 driver 來管理本 page 中元素,將 page 中的操作封裝成一個個方法

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

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

組織代碼

1 :實現(xiàn) BasePage

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains #鼠標操作
class BasePage():
    '''
    BasePage封裝所有界面都公用的方法。
    例如driver,find_element等
    '''
    # 實例化BasePage類時,事先執(zhí)行的__init__方法,該方法需要傳遞參數(shù)
    def __init__(self,driver,url):
        self.driver = driver
        self.base_url = url
    # 進入網(wǎng)址
    def get(self):
        self.driver.get(self.base_url)
    #元素定位,替代八大定位
    def get_element(self,*locator):
        return self.driver.find_element(*locator)
    #點擊
    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 :實現(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)
    #進入百度
    def open_baidu(self):
        self.get()
    #輸入數(shù)據(jù)
    def input_search_content(self,text):
        self.send_text(text,By.ID,"kw")
    # 點擊按鈕
    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 :實現(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)點

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

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

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

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

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

相關(guān)文章

  • 簡述:我為什么選擇Python而不是Matlab和R語言

    簡述:我為什么選擇Python而不是Matlab和R語言

    這篇文章主要介紹了簡述:我為什么選擇Python而不是Matlab和R語言,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • python并行設(shè)計的實現(xiàn)

    python并行設(shè)計的實現(xiàn)

    python中的并行設(shè)計可以顯著增強程序處理大量數(shù)據(jù)或復(fù)雜計算的速度,通過使用threading、multiprocessing和concurrent.futures等庫,開發(fā)者可以有效利用多核CPU的計算力,下面就來詳細的介紹一下
    2024-09-09
  • Python玩轉(zhuǎn)加密的技巧【推薦】

    Python玩轉(zhuǎn)加密的技巧【推薦】

    Python 中的一個有用的基本加密庫就叫做 cryptography 。這篇文章主要介紹了Python玩轉(zhuǎn)加密的技巧,需要的朋友可以參考下
    2019-05-05
  • python類的私有屬性和公共屬性說明

    python類的私有屬性和公共屬性說明

    這篇文章主要介紹了python類的私有屬性和公共屬性說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 解決python2 繪圖title,xlabel,ylabel出現(xiàn)中文亂碼的問題

    解決python2 繪圖title,xlabel,ylabel出現(xiàn)中文亂碼的問題

    今天小編就為大家分享一篇解決python2 繪圖title,xlabel,ylabel出現(xiàn)中文亂碼的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 使用pip安裝python庫的多種方式

    使用pip安裝python庫的多種方式

    這篇文章主要介紹了使用pip安裝python庫的幾種方式,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • python?實現(xiàn)?mp3Play?音頻播放

    python?實現(xiàn)?mp3Play?音頻播放

    這篇文章主要介紹了python?實現(xiàn)?mp3Play?音頻播放,文章基于python的相關(guān)資料展開詳細內(nèi)容,具有一定的參考價值需要的小伙伴可以參考一下
    2022-04-04
  • Python pip替換為阿里源的方法步驟

    Python pip替換為阿里源的方法步驟

    這篇文章主要介紹了Python pip替換為阿里源的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2019-07-07
  • Python海象運算符的用法教程

    Python海象運算符的用法教程

    Python 海象運算符是在 PEP 572 中提出,并在 Python3.8 版本并入和發(fā)布。本文就來為大家詳細講講Python海象運算符的用法,感興趣的可以了解一下
    2022-07-07
  • Python中文本和數(shù)字相等判斷方式

    Python中文本和數(shù)字相等判斷方式

    這篇文章主要介紹了Python中文本和數(shù)字相等判斷方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03

最新評論

马山县| 滕州市| 玛曲县| 开江县| 龙口市| 梅河口市| 达日县| 茌平县| 和林格尔县| 平凉市| 临澧县| 泽库县| 九龙城区| 宁安市| 静宁县| 天门市| 博爱县| 舒城县| 克东县| 阳泉市| 长垣县| 邵武市| 江阴市| 察隅县| 明溪县| 东丰县| 昭觉县| 庄河市| 上高县| 洞口县| 沈丘县| 曲阳县| 奉贤区| 南丰县| 宁乡县| 泽州县| 青阳县| 江达县| 浙江省| 利辛县| 吉林省|