Po模型---多個page

一. PO模型介紹

在自動化中,Selenium自動化測試中有一個名字經常被提及PageObject(思想與面向對象的特征相同)掺出,通常PO模型可以大大提高測試用例的維護效率

優(yōu)點:重用载慈,業(yè)務和對象分離惭等,代碼結構清晰,方便代碼維護

二娃肿、PO的核心要素

1.在PO模式中抽離封裝集成一個BasePage類咕缎,該基類應該擁有一個只實現webdriver實例的屬性
2.每一個page都繼承BasePage,通過driver來管理本page中元素料扰,將page中的操作封裝成一個個方法 3.TestCase繼承unittest.Testcase類凭豪,并依賴page類,從而實現相應的測試步驟

四.非PO實現

4.1 代碼展示

image.png

4.2:代碼分析

不同的運行腳本環(huán)境晒杈,游覽器不同:驅動webdriver.Firefox()可以剝離
請求地址的變化(生產環(huán)境和測試環(huán)境):url = http://www.baidu.com可以剝離
操作元素時嫂伞,常常要等待元素加載完成方可進行操作:可以把webdriver提供的find_element*方法封裝,在元素操作前,先判斷元素是否可以操作
實際測試場景中帖努,可能有多個測試場景撰豺,如果每個測試場景都需要維護url,游覽器驅動,元素定位等,效率會非常低
因此基于以上分析,是否可以設計一個所有測試界面(selenium本身是B/S系統(tǒng)開展測試)的基類拼余,來維護公共的方法污桦,此處定義名字為BasePage.py,用于存放頁面公共方法及webdriver原有方法二次封裝等。

五.PO實現

5.1:實現BasePage

5.1.1:BasePage代碼實現

image.png

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains #鼠標操作
class BasePage():
'''BasePage封裝所有界面都公用的方法匙监。例如driver,find_element等'''
'''實例化BasePage類時凡橱,事先執(zhí)行的init方法,該方法需要傳遞參數'''
def init(self,driver):
self.driver = driver
# 進入網址
def get(self,url):
self.driver.get(url)
#元素定位,替代八大定位
def get_element(self,locator):
return self.driver.find_element(
locator)
#點擊
def left_click(self,locator):
ActionChains(self.driver).double_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])
-------------------------------------------------------------------------------------------###5.2:實現SearchPage

5.2.1:SearchPage代碼實現

'''-----------------------------------------------------------------------------------------
實現步驟:(1)繼承basepage,(2)元素傳參,(3)調取方法
'''
from selenium.webdriver.common.by import By
from pomodel.Base.base_page import BasePage
class Search(BasePage):
def init(self,driver):
BasePage.init(self,driver)
#進入百度
def open_baidu(self,url):
self.get(url)
#輸入搜索內容
def input_search_content(self,text):
self.send_text(text,By.ID,"kw")
#點擊按鈕
def click_baidu_search(self):
self.left_click(By.ID,"su")


image.png

5.3:實現TestCase

5.3.1:TestCase代碼

================================================
import unittest
from selenium import webdriver
from pomodel.Pages.search_pages import Search
class BaiBu(unittest.TestCase):
def setUp(self) -> None:
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(10)
def test_serach(self):
url="http://www.baidu.com"
s = Search(self.driver)
s.open_baidu(url)
s.input_search_content("jack")
s.click_baidu_search()
def tearDown(self) -> None:
self.driver.quit()
if name == 'main':
unittest.main()
====================================================

image.png


六亭姥、PO模式的優(yōu)點

1:PO提供了一種業(yè)務流程與頁面元素操作分離的模式稼钩,這使得測試代碼變得更加清晰
2:頁面對象與用例分離,使得我們更好的復用對象
3:可復用的頁面方法代碼會變得更加優(yōu)化
4:更加有效的命令方式使得我們更加清晰的知道方法所操作的UI元素

八:多個page(界面)的操作

9.1:提供一個basepage類

image.png
image.png

9.2:多個page(界面操作)

page1:在游覽器中訪問:qq郵箱(https://qzone.qq.com/),

image.png

page2:在page2中在表單中輸入用戶名和密碼

image.png

page3:在主界面中點擊留言板

image.png

9.3:單元測試

image.png
image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末达罗,一起剝皮案震驚了整個濱河市坝撑,隨后出現的幾起案子,更是在濱河造成了極大的恐慌粮揉,老刑警劉巖巡李,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異扶认,居然都是意外死亡击儡,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門蝠引,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蛀柴,你說我怎么就攤上這事螃概。” “怎么了鸽疾?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵吊洼,是天一觀的道長。 經常有香客問我制肮,道長冒窍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任豺鼻,我火速辦了婚禮综液,結果婚禮上,老公的妹妹穿的比我還像新娘儒飒。我一直安慰自己谬莹,他們只是感情好,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著附帽,像睡著了一般埠戳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蕉扮,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天整胃,我揣著相機與錄音,去河邊找鬼喳钟。 笑死屁使,一個胖子當著我的面吹牛,可吹牛的內容都是我干的荚藻。 我是一名探鬼主播屋灌,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼应狱!你這毒婦竟也來了共郭?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤疾呻,失蹤者是張志新(化名)和其女友劉穎除嘹,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體岸蜗,經...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡尉咕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了璃岳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片年缎。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖铃慷,靈堂內的尸體忽然破棺而出单芜,到底是詐尸還是另有隱情,我是刑警寧澤犁柜,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布洲鸠,位于F島的核電站,受9級特大地震影響馋缅,放射性物質發(fā)生泄漏扒腕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一萤悴、第九天 我趴在偏房一處隱蔽的房頂上張望瘾腰。 院中可真熱鬧,春花似錦稚疹、人聲如沸居灯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽怪嫌。三九已至义锥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間岩灭,已是汗流浹背蟹地。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工实愚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留八拱,地道東北人藏雏。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像找爱,于是被迫代替她去往敵國和親梗顺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內容

  • 一车摄、PO模型介紹 在自動化中寺谤,Selenium自動化測試中有一個名字經常被提及PageObject(思想與面向對象...
    ln111閱讀 267評論 0 0
  • 一、PO模型介紹 在自動化中吮播,Selenium自動化測試中有一個名字經常被提及PageObject(思想與面向對象...
    __65a0閱讀 128評論 0 1
  • 一变屁、PO模型介紹 在自動化中,Selenium自動化測試中有一個名字經常被提及PageObject(思想與面向對象...
    在摘棉花閱讀 599評論 0 0
  • PO模型 一意狠、PO模型介紹 在自動化中粟关,Selenium自動化測試中有一個名字經常被提及PageObject(思想...
    G_eebd閱讀 189評論 0 0
  • 一、po模型介紹 優(yōu)點:重用环戈,業(yè)務和對象分離闷板,代碼結構清晰,方便代碼維護 二院塞、核心要素 1蛔垢、...
    384bdb547ea6閱讀 318評論 0 0