點(diǎn)此獲取更多相關(guān)資料
本文為霍格沃茲測(cè)試開(kāi)發(fā)學(xué)社學(xué)員學(xué)習(xí)筆記分享
原文鏈接:https://ceshiren.com/t/topic/27167
一、page object 模式簡(jiǎn)介
-
馬丁福勒個(gè)人博客
-
selenium 官網(wǎng)
1.1、傳統(tǒng) UI 自動(dòng)化的問(wèn)題
- 無(wú)法適應(yīng) UI 頻繁變化
- 無(wú)法清晰表達(dá)業(yè)務(wù)用例場(chǎng)景
- 大量的樣板代碼 driver/find/click
二、page object 設(shè)計(jì)原則
2.1、POM 模式的優(yōu)勢(shì)
- 降低 UI 變化導(dǎo)致的測(cè)試用例脆弱性問(wèn)題
- 讓用例清晰明朗,與具體實(shí)現(xiàn)無(wú)關(guān)
2.2、POM 建模原則
-
字段意義文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-695527.html
- 不需要暴露頁(yè)面內(nèi)部的元素給外部
- 不需要建模UI內(nèi)的所有元素
-
方法意義文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-695527.html
- 用公共的方法代表UI所提供的功能
- 方法應(yīng)該返回其他page object或者返回用于斷言的數(shù)據(jù)
- 同樣的行為不同的結(jié)果可以建模為不同的方法
- 不要在方法內(nèi)斷言
2.3、POM 使用方法
- 把元素信息和操作細(xì)節(jié)封裝到 PageObject 類(lèi)中
- 根據(jù)業(yè)務(wù)邏輯,在測(cè)試用例中鏈?zhǔn)秸{(diào)用
三、page object示例展示
3.1、搜索場(chǎng)景:傳統(tǒng)線性腳本(Python)
- 傳統(tǒng)測(cè)試用例
from selenium import webdriver
from selenium.webdriver.common.by import By
class TestSearch:
def test_search(self):
# 初始化瀏覽器
self.driver = webdriver.Chrome()
self.driver.get("https://xueqiu.com/")
self.driver.implicitly_wait(3)
# 輸入搜索關(guān)鍵詞
self.driver.find_element(By.NAME, "q").send_keys("阿里巴巴-SW")
# 點(diǎn)擊搜索按鈕
self.driver.find_element(By.CSS_SELECTOR, "i.search").click()
# 獲取搜索結(jié)果
name = self.driver.find_element(By.XPATH, "http://table//strong").text
# 斷言
assert name == "阿里巴巴-SW"
3.2、POM 腳本(Python)
- 股票頁(yè)面 PageObject
from selenium import webdriver
from selenium.webdriver.common.by import By
class SearchPage:
__INPUT_SEARCH = (By.NAME, "q")
__BUTTON_SEARCH = (By.CSS_SELECTOR, "i.search")
__SPAN_STOCK = (By.XPATH, "http://table//strong")
def __init__(self):
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(3)
self.driver.get("https://xueqiu.com/")
def search_stock(self, stock_name: str):
self.driver.find_element(*self.__INPUT_SEARCH).send_keys(stock_name)
self.driver.find_element(*self.__BUTTON_SEARCH).click()
name = self.driver.find_element(By.XPATH, "http://table//strong").text
return name
- PO 模式測(cè)試用例
from onSelenium.fei.page_objects.search_page import SearchPage
class TestSearch:
def test_search(self):
text = SearchPage().search_stock("阿里巴巴-SW")
# 斷言
assert "阿里巴巴-SW" == text
到了這里,關(guān)于軟件測(cè)試/測(cè)試開(kāi)發(fā)丨Web自動(dòng)化 PageObject設(shè)計(jì)模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!