码迷,mamicode.com
首页 > 编程语言 > 详细

python UI自动化实战记录三:pageobject-基类

时间:2019-01-13 18:10:34      阅读:372      评论:0      收藏:0      [点我收藏+]

标签:脚本   not   obj   %s   base   cti   gets   exist   size   

脚本思路:使用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!

 

python UI自动化实战记录三:pageobject-基类

标签:脚本   not   obj   %s   base   cti   gets   exist   size   

原文地址:https://www.cnblogs.com/dinghanhua/p/10263217.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!