这可能是最简单的Page Object库

做过web自动化测试的同学,对Page object设计模式应该不陌生。

Page object库应该根据以下目标开发:

  • Page object应该易于使用

  • 清晰的结构

    • PageObjects 对于页面对象

    • PageModules对于页面内容

  • 只写测试,而不是基础。

  • 在可能的情况下防止样板代码。

  • 不需要自己管理浏览器。

  • 在运行时选择浏览器,而不是在类级别。

  • 不需要直接接触selenium。

这只是一种设计模式,只要遵循它有思想,不借助第三方库,我们一样可以实现这种设计模式。

创建baidu_page.py 文件,实现page层封装。


class BasePage:"""基础Page"""def __init__(self, driver):self.driver = driverdef get(self, url):self.driver.get(url)def id_(self, id_):return self.driver.find_element_by_id(id_)def xpath(self, xpath):return self.driver.find_element_by_xpath(xpath)class BaiduPage(BasePage):"""百度首页Page"""@propertydef search_box(self):return self.id_("kw")@propertydef search_button(self):return self.xpath("//*[@id='su']")

我们本质上要将元素的定位和元素的操作分开,page层用来定义元素的定位。

接下来创建,test_baidu.py文件,用来实现自动化测试。

from selenium import webdriver
from baidu_page import BaiduPagedr = webdriver.Chrome()
page = BaiduPage(dr)
page.get("https://www.baidu.com")
page.search_box.send_keys("page object")
page.search_button.click()dr.close()

这里你将看不到元素的定位,分层的好处就是,当元素的定位发生改变时,只需要维护好page层即可,对于测试用例来说不需要关心元素怎么定位,只要专心设计好用例即可。

可是,Page层的编写并不太简便,本质上它的作用只是定义一些元素的定位。那我告诉你,只需要4行代码也可以实现上面baidu_page.py的功能,你会不会太简单了?

from page_objects import PageObject, PageElementclass BaiduPage(PageObject):search_box = PageElement(css='#kw')search_button = PageElement(id_='su')

是的,就这么简单,专注于元素的定位的编写,几乎没有多月的东西。而且还可以添加超时时间哦!

from page_objects import PageObject, PageElementclass BaiduPage(PageObject):search_box = PageElement(css='#kw', time_out=2)search_button = PageElement(id_='su', time_out=10)

这样再也不用写恶心的显式等待了,是不是很爽!?

定位一组元素也是非常简单的说。

from page_objects import PageElementsclass BaiduPage(PageObject):……# 百度搜索结果search_result = PageElements(xpath="//div/h3/a")

啥? 项目地址? 别急!别急!

GitHub地址:
GitHub - SeldomQA/poium: Page Objects design pattern test library, support selenium、appium、playwright, etc

原项目已经不再维护,我阅读了原项目代码,虽然只有100多行,但设计非常精妙。可惜缺少元素的等待,这将有助于定位元素的稳定性,所以,在原有项目的基础上增加的该功能。

下载安装:

$ python setup.py install

通过pip命令安装:

$ pip install -i https://testpypi.python.org/pypi selenium-page-objects

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/27626.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用qemu创建ubuntu-base文件系统,并安装PM相关内核模块

目录 一、配置镜像二、使用qemu模拟nvdimm(安装PM相关内核模块)运行记录 遇到的一些问题1、ext4文件系统损坏问题:系统启动时,遇到ext4的报错信息解决办法:2、内核模块未成功加载3、qemu报错4、主机终端无法正常打开5、…

【深度学习平台推荐】 Kaggle

工欲善其事,必先利其器。在一个优秀的平台上,更利于深度学习的探究。 本文目的是推荐一些深度学习相关的网站。 1 Kaggle Kaggle offers a no-setup, customizable, Jupyter Notebooks environment. Access GPUs at no cost to you and a huge repositor…

GDB调试——学习笔记

文章目录 GDB是什么GDB调试的一般步骤1. 编译生成带源代码信息的可执行文件2. 启动调试3. 进行调试:设置断点、查看变量、寻找BUG4. 退出调试 GDB是什么 GDB就是一个程序代码调试的工具。 GDBGCC开发环境 GDB调试的一般步骤 1. 编译生成带源代码信息的可执行文件…

6.3.5 利用Wireshark进行协议分析(五)----捕获并分析ICMP报文

6.3.5 利用Wireshark进行协议分析(五)----捕获并分析ICMP报文 一、捕获ICMP报文 打开Wireshark,选择网络接口并点击开始按钮。分组列表面板不断刷新抓渠道的数据包,为了过滤出我们所要分析的ICMP报文,我们在过滤框中输…

(学习笔记-连接断开)TCP四次挥手

TCP四次挥手过程 TCP断开连接是通过四次挥手实现的,双方都可以主动断开连接,断开连接后主机中的资源将被释放,四次挥手的过程如下: 客户端打算关闭连接时,会发送一个TCP首部FIN标志位为1的报文,也就是FIN报…

C#中的抽象类(abstract)

C#中的抽象类(abstract)。 1:抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法 2:抽象类不能被实例化 3:抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方…

OpenCV中reshape()函数详解-改变矩阵的通道数,对矩阵元素进行序列化

文章目录 1、函数原型2、示例3、结论: OpenCV中reshape()函数详解-改变矩阵的通道数,对矩阵元素进行序列化 在opencv中reshape函数,既可以改变矩阵的通道数,又可以对矩阵元素进行序列化 1、函数原型 Mat Mat::reshape(int cn, in…

SQLServer2022安装(Windows),已验证

二、安装可视化工具SSMS 接下来安装可视化工具SSMS,现在新版本默认都是没有可视化界面,需要单独安装 (1)地址:下载 SQL Server Management Studio (SSMS) - SQL Server Management Studio (SSMS) | Microsoft Learn…

集合面试题--二叉树,红黑树,散列表

目录 二叉树 二叉搜索树 时间复杂度 总结 红黑树 红黑树特质 复杂度 总结 散列表 散列函数 哈希冲突 散列冲突-链表法(拉链) 时间复杂度 ​总结 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是…

jenkins发布使用邮件添加审批

首先安装好Email Extension Plugin插件并在 system下配置好邮件 然后配置流水线需要的参数 ![在这里插入图片描述](https://img-blog.csdnimg.cn/418fc89bfa89429783a1eb37d3e4ee26.png#pic_center pipeline如下: def skipRemainingStages false //是否跳过生…

pdf转excel表格怎么做?分享效率超高的方法

PDF是我们在办公中常用的格式,它方便我们保存、查阅和传输文件。有时候我们可能会遇到需要将大量内容的PDF文档转换为Excel表格的情况,这时候一个好用的转换工具就能帮助我们省时高效地完成任务。下面将介绍几款可靠且实用的PDF转换器软件。 一、小圆象P…

如何使用ArcGIS Pro进行洪水淹没分析

伴随Esri将重心越来越多的放在ArcGIS Pro上,以后ArcGIS的使用场景可能会越来越少,所以我们可以提前接触并使用ArcGIS Pro,做好相关准备。这里为大家介绍一下在ArcGIS中常见的操作——洪水淹没分析在ArcGIS Pro中如何实现。 01 加载数据 在菜单栏上点击插入,点击新建地图,…