pom模式是什麼
pom模式的**目錄組織示例:
pom的優勢:
pom提供了一種在ui層操作、業務流程與驗證分離的模式,這使得測試**變得更加清晰和高可讀性
物件庫與用例分離,使得我們更好的復用物件,甚至能與不同的工具進行深度結合應用
可復用的頁面方法**會變得更加優化
更加有效的命名方式使得我們更加清晰的知道方法所操作的ui元素。例如我們要回到首頁,方法名命名為: gotohomepage(),通過方法名即可清晰的知道具體的功能實現。
可以理解pom模式是一種底層、邏輯、用例的分層。
一、driver層的封裝(最底層的封裝base)
這一層主要是對於webdriver方法的封裝,這裡來舉乙個栗子,最常用的定位方法,使用find_element()方法通過by類、字串、元組三種方法傳遞定位型別和資料,這裡我使用元組的形式(例如locator = ("id","name_box"))來傳遞引數
1.1定位元素方法封裝
這個定位元素的公共方法中,加了很多東西;如果每次定位的時候寫這些異常捕獲、列印操作的話,那麼程式會非常臃腫,所以需要單獨提出來,每次需要定位的時候統一呼叫這個方法。
def findelementnew(self, locator):1.2封裝類的初始化'''定位到元素返回元素物件,沒定位到,返回timeout異常'''
# isinstance() 函式來判斷乙個物件是否是乙個已知的型別
if not isinstance(locator, tuple):
print('locator引數型別錯誤,必須是元祖型別:loc=("id", "value")')
else:
try:
print("正在定位元素資訊:定位方式->%s, value值->%s" % (locator[0], locator[1]))
ele = webdriverwait(self.driver, self.timeout, self.t).until(ec.presence_of_element_located(locator))
return ele
except:
return
對於webdriver的封裝,我們要先建立乙個class,這樣方便我們繼承呼叫這些封裝的方法。在class中,我這裡設計了乙個初始化,每次呼叫封裝的driver時,傳遞引數,乙個必填項:driver,我這樣的想法是每次引用這個封裝類時,傳遞乙個driver進來
def __init__(self, driver):二、page層書寫self.driver = driver
self.driver.maximize_window()
page類在繼承我們封裝的webdriver後,主要寫具體的操作步驟,例如輸入登入名、輸入登入密碼、點選登入按鈕等操作。
2.1繼承driver類
2.2操作步驟書寫
class loginpage(base): #繼承三、case層呼叫# 定位登入
loc_user = ('id', 'account')
loc_psw = ('css selector', '[name="password"]')
loc_button = ('xpath', '//*[@id="submit"]')
loc_get_user = ('css selector', '#usermenu>a')
loc_forget_psw_page = ('xpath', '/html/body/div/div/div[2]/p/a')
def input_user(self, text=''):
self.sendkeys(self.loc_user, text)
def input_psw(self, text=''):
self.sendkeys(self.loc_psw, text)
def click_login_button(self):
self.click(self.loc_button)
終於到了第三層,這裡我們要做的就是把page層的方法,像搭積木一樣搭起來,並且連成完整的操作。
3.1使用unittest,並初始化資料
在unittest框架的基礎上,主要是在setup()方法中初始化我們的資料,例如**、賬號、driver的初始化。
3.2呼叫方法,完成用例
首先引用page層,然後使用page層的方法搭建case。
Python Selenium環境搭建
安裝python 設定 python 的環境變數 安裝目錄 安裝目錄 scripts 使用 pip安裝 selenium pip install selenium 安裝完python pip工具,在安裝目錄的 scripts 目錄下。在 dos下直接執行 pip install selenium 即...
Python Selenium 學習筆記
1 判斷元素是否存在 try driver.find element.xx a true except a false if a true print 元素存在 elif a false print 元素不存在 2 判斷元素是否顯示 driver.find element by id outputb...
Python Selenium錯誤小結
因為要使用web應用,所以開始用起了,selenium包,安裝倒是挺容易的,但就是出了很多bug。filenotfounderror winerror 2 系統找不到指定的檔案。通過錯誤反饋發現是要把該軟體加到路徑裡面,但是,設定了系統環境變數後發現還是不行,最後,使用了乙個非常原始的方法 brow...