Python 包,帮助在 Web 自动化测试中,使用 Page Object 方式编写代码。
名称取 not only page object 的首字母。
基于 Selenium 封装,开发受到了 poium 的影响。
项目地址:https://github.com/DingJunyao/nopo,欢迎 fork 和 star 。
pip 安装:pip install nopo
,目前支持 Python 3.7 及以上版本。
目前在自己所在的公司里面有一定的应用(虽然目前公司里面做测试的就两个人……而且以人工测试为主)。
不知道这里做 Web 自动化测试的人有多少……也不知道怎么更好地安利它,毕竟自己认识的人基本上没有同行……
如果大家觉得有什么可以添加的功能,或者说有什么建议——不管是代码、文档还是其他——都可以提~
1
del1214 2021-12-23 09:29:42 +08:00
感谢分享
|
2
cyrivlclth 2021-12-23 10:22:14 +08:00
感觉像是简单事情复杂化?
|
3
AchieveHF 2021-12-23 10:56:54 +08:00
Playwright 更香吧
|
4
BillTin OP @AchieveHF 我试过 Playwright ,在处理浏览器级别的对话框的效果不是很理想,就没有用。
@cyrivlclth 如果直接用 Selenium ,创建的 WebElement 对象不太稳定,页面稍微变一下就要重新生成。重复写代码比较麻烦,一开始用的是 poium ,之后想扩展功能发现比较麻烦,索性自己写了…… |
5
cyrivlclth 2021-12-23 16:14:08 +08:00
@BillTin 这个东西可以前端打包的时候自动生成吗?
|
6
BillTin OP @cyrivlclth 应该不行,至少我没有往这方面想过……感觉这个难度挺大的,我在的公司里面,很多项目里面的 Web 控件都是没有非常明显的特征,要手写 XPath 才行。
刚才发现自己之前的描述有问题,修正一下:之前说的“不稳定”,是在**测试过程**中,页面元素发生变化的情况(可能通过之前的查询还能查到元素,肉眼上发现不了变化,但是元素实际上重新加载过。这种情况下如果不重新查找元素,试图操作原先的元素,会抛出 `StaleElementReferenceException` 这样的异常)。 |
7
cyrivlclth 2021-12-24 15:15:40 +08:00
@BillTin 就说页面元素是动态生成的,每次都不一样的意思?
|
8
BillTin OP @cyrivlclth 有这种情况,不过不是这个意思,元素的定位和特征相对比较固定,但是会重新加载
|
9
warcraft1236 2021-12-27 14:45:26 +08:00
简单搂了一眼代码,感觉就是封装了一下 By.xxx 方法,这玩意跟 po 有啥关系
|