python UI自動化實戰記錄三:pageobject-基類

腳本思路:使用pageobject模式,寫一個basepage基類,所有頁面的通用方法封裝到基類中。

項目中的測試頁面page1和page2都繼承自basepage基類。可使用基類定義的方法。基類裏會將webdriver和page合二爲一,既將webdriver的操作改寫成page的方法。

 

 

新建一個包pageclass 》 分別新建basepage、page1、page2三個python文件。

 

 

basepage裏定義basepage基類,代碼如下:

#-*-coding:utf-8-*-
"""
頁面基類
所有頁面通用的方法封裝
dinghanhua
2019-01
"""

from time import sleep
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver import ActionChainsimport os
from datetime import datetime


class BasePage:
    """頁面基類"""
    def __init__(self,driver): #構造函數
        self.driver = driver

def openpage(self,url): """ 打開頁面""" self.driver.get(url) self.driver.implicitly_wait(10) #隱式等待默認時間 self.driver.maximize_window() #最大化窗口
def getelement(self,*locator): """獲取頁面元素""" return self.driver.find_element(*locator)
def getelements(self,*locator): """獲取頁面元素集""" return self.driver.find_elements(*locator)
def getchild(self,pageelement,*locator): """獲取頁面子節點""" return pageelement.find_element(*locator)
def getchilds(self,pageelement,*locator): """獲取元素子節點集""" return pageelement.find_elements(*locator)
def getelement_wait_presence(self,*locator): ele = WebDriverWait(self.driver, 10, 0.2).until( EC.presence_of_element_located(locator) ) # 等元素可定位時 return ele
def refresh(self): """刷新頁面""" self.driver.refresh()
def movetoelement(self,pageelement): """鼠標移到pageelement上""" actionchains = ActionChains(self.driver) actionchains.move_to_element(pageelement).perform() # 鼠標移到圖標上
def wait(self,sec): sleep(sec)
def getscreenshot(self,filename="截圖"): """帶有時間戳的截圖""" screenshot_dir = './screenshot' # 截圖根目錄 if not os.path.exists(screenshot_dir): #不存在則創建該目錄 os.mkdir(screenshot_dir) nowdate = datetime.now().strftime('%Y%m%d') # 當日日期 screenshot_date_dir = os.path.join(screenshot_dir, str(nowdate)) # 當前日期文件夾 if not os.path.exists(screenshot_date_dir): os.mkdir(screenshot_date_dir) # 不存在則創建 nowtime_ms = datetime.now().strftime('%H%M%S%f') # 時間戳到毫秒級 filename = nowtime_ms + filename + ".png" # 拼接文件名 時間戳+文件名+.png filepath = os.path.join(screenshot_date_dir,filename) self.driver.get_screenshot_as_file(filepath) # 截圖
def closepage(self): """關閉瀏覽器""" self.driver.quit()

 

如果page1或page2中有用到其他的webdriver方法,繼續添加到basepage中。basepage的方法是逐漸增加的。可以適用於各個項目。 

 

 the end!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章