python selenium設計模式POM

2022-07-04 14:18:12 字數 2332 閱讀 2256

pom模式是什麼

pom模式的**目錄組織示例:

pom的優勢:

pom提供了一種在ui層操作、業務流程與驗證分離的模式,這使得測試**變得更加清晰和高可讀性

物件庫與用例分離,使得我們更好的復用物件,甚至能與不同的工具進行深度結合應用

可復用的頁面方法**會變得更加優化

更加有效的命名方式使得我們更加清晰的知道方法所操作的ui元素。例如我們要回到首頁,方法名命名為: gotohomepage(),通過方法名即可清晰的知道具體的功能實現。

可以理解pom模式是一種底層、邏輯、用例的分層。

一、driver層的封裝(最底層的封裝base)

這一層主要是對於webdriver方法的封裝,這裡來舉乙個栗子,最常用的定位方法,使用find_element()方法通過by類、字串、元組三種方法傳遞定位型別和資料,這裡我使用元組的形式(例如locator = ("id","name_box"))來傳遞引數

1.1定位元素方法封裝

這個定位元素的公共方法中,加了很多東西;如果每次定位的時候寫這些異常捕獲、列印操作的話,那麼程式會非常臃腫,所以需要單獨提出來,每次需要定位的時候統一呼叫這個方法。

def findelementnew(self, locator):

'''定位到元素返回元素物件,沒定位到,返回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

1.2封裝類的初始化

對於webdriver的封裝,我們要先建立乙個class,這樣方便我們繼承呼叫這些封裝的方法。在class中,我這裡設計了乙個初始化,每次呼叫封裝的driver時,傳遞引數,乙個必填項:driver,我這樣的想法是每次引用這個封裝類時,傳遞乙個driver進來

def __init__(self, driver):

self.driver = driver

self.driver.maximize_window()

二、page層書寫

page類在繼承我們封裝的webdriver後,主要寫具體的操作步驟,例如輸入登入名、輸入登入密碼、點選登入按鈕等操作。

2.1繼承driver類

2.2操作步驟書寫

class loginpage(base): #繼承

# 定位登入

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)

三、case層呼叫

終於到了第三層,這裡我們要做的就是把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...