python UI自动化实战记录三:pageobject-基类
发布日期:2021-08-16 15:55:34 浏览次数:5 分类:技术文章

本文共 2635 字,大约阅读时间需要 8 分钟。

脚本思路:

   使用pageobject模式,写一个basepage基类,所有页面的通用方法封装到基类中。比如打开页面,关闭页面,等待时间,鼠标移到元素上,获取单个元素,获取一组元素,获取元素的子元素,截图等等。

  项目中的测试页面page1和page2都继承自basepage基类。可使用基类定义的方法。基类里会将webdriver和page合二为一,既将webdriver的操作改写成page的方法。

 

 

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

 

 

basepage里定义basepage基类,代码如下:

#-*-coding:utf-8-*-"""页面基类所有页面通用的方法封装dinghanhua2019-01"""from time import sleepfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver import ActionChainsimport osfrom datetime import datetimeclass 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!

 

转载于:https://www.cnblogs.com/dinghanhua/p/10263217.html

转载地址:https://blog.csdn.net/weixin_30810239/article/details/98592647 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java三大特性(封装、继承、多态)
下一篇:iOS核心动画工作笔记

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年03月28日 10时45分26秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

php正则表达式 匹配数字,正则表达式之匹配数字范围 2019-04-21
php中带?错误,参考-此错误在PHP中意味着什么? 2019-04-21
php生成链接列表,根据URL链接和抛文本生成链接<a>标签的PHP函数 2019-04-21
matlab里inline定义矩阵,Matlab中的inline函数_matlab中inline函数 2019-04-21
php html标签自定义属性,浅谈JS读取DOM对象(标签)的自定义属性 2019-04-21
如何使用matlab的siso,利用Matlab内建程式SISODesignTool完成系统分析(Matlab61)开启.PDF... 2019-04-21
php 实现 model层,Thinkhphp5控制器调用的Model层的方法总结 2019-04-21
matlab6.0序列号,MFC软件获取USB设备的制造商、产品、序列号 2019-04-21
matlab中多边形滤波器,几种常见空间滤波器MATLAB实现 2019-04-21
matlab fminimax 例子,Matlab应用实例(8)—fminimax 2019-04-21
php://filter利用条件,浅谈php://filter技巧 2019-04-21
mplayer-php,mplayer+smplayer 前后端播放器安装 2019-04-21
oracle昨日时间,。。今日,昨日,上周,本月,本年,按时间统计总金额 2019-04-21
php验证卡号,PHP验证信用卡卡号是否正确函数 2019-04-21
mpvue微信小程序动画_推荐两个微信小程序开发框架 2019-04-21
固态硬盘分为哪几种_零基础玩转固态硬盘 深度排雷 买SSD掌握这些就够了 2019-04-21
调python返回图片_Python异常处理,3个好习惯分享给你 2019-04-21
15拆解_收藏:15款劲芯微芯片无线充产品拆解 2019-04-21
弹出u盘_都说:U盘直接拔出不会丢失文件,“安全弹出”形同虚设,对吗? 2019-04-21
怎么查看elementui版本_2021新年 Vue3.0 + Element UI 尝鲜小记 2019-04-21