zoukankan      html  css  js  c++  java
  • 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!

  • 相关阅读:
    temp
    Windows如何利用输入法简单的打出 ‘↑’ ‘↓’ ‘↖’等箭头
    Win10系统特别卡的一个原因
    巨蟒python全栈开发-第16天 核能来袭-初识面向对象
    在pycharm中误删了Python文件,怎么办,挺急的?
    巨蟒python全栈开发-第15天 装饰器
    巨蟒python全栈开发-第13天 内置函数 匿名函数lambda
    巨蟒python全栈开发-第12天 生成器函数 各种推导式 yield from
    360浏览器的收藏夹隐藏了,怎么处理?
    如何解决安装好的google浏览器打不开网页的问题?
  • 原文地址:https://www.cnblogs.com/dinghanhua/p/10263217.html
Copyright © 2011-2022 走看看