Selenium基于POM的自动化测试实践

PageObject模式是一种将页面元素和操作分离的自动化测试方法,旨在减少代码冗余和提高维护性。它通常包括对象层、逻辑层和业务层。示例展示了如何构建PO模型,包括基础层、对象层和逻辑层的实现,以及使用Selenium进行自动化测试的过程。在运行中,可以看到登录操作的日志信息,包括成功和失败的情况。文章强调了PageObject模式的优点,并指出还有优化空间,如添加测试报告和实现持续集成等。
摘要由CSDN通过智能技术生成

什么是Page Object模式

Page Object 见名知意,就是页面对象,并将页面元素定位方法和元素操作进行分离。在实际自动化测试实战过程中,我们一般对脚本的实现分为三层:
(1)对象层: 用于存放页面元素定位和控件操作
(2)逻辑层: 则是一些封装好的功能用例模块
(3)业务层: 则是我们真正的测试用例的操作部分

PageObject 的优点

  • 减少代码冗余
  • 业务和实现分离
  • 降低代码维护成本

PageObject 的六大原则

  1. The public methods represent the services that the page offers/公共方法表示页面提供的服务

  2. Try not to expose the internals of the page/尽量不要暴露页面的内部

  3. Generally don’t make assertions/Page设计中不要出现断言,应该写在测试用例类中

  4. Methods return other PageObjects/方法返回其他PageObject

  5. Need not represent an entire page/不需要表示整个页面

  6. Different results for the same action are modeled as different methods/相同操作的不同结果被建模为不同的方法

示例(登录百度一下)

一、构建PO模型

项目的整个PO结构如下
在这里插入图片描述

二、基础层

首先是base目录下的basepage.py

在这里插入图片描述
在这里插入图片描述

这里作为基类,封装定位、点击、输入等基本操作以及可以增加异常时截图的方法

三、对象层、逻辑层

page目录下的login_page.py
在这里插入图片描述
封装这个页面基本所有可能的操作,注意方法的最后最好可以返回接下来要跳转的页面对象(如登录后就会跳转到首页)

page_element目录下是单独为每个页面的元素做维护而建立的模块文件
在这里插入图片描述
还有common目录下
在这里插入图片描述
constant.py内定义一下常量,logger.py为日志打印

testcase目录
在这里插入图片描述
在这里插入图片描述
编写真正的测试用例,可以再次进行断言、添加测试报告等。

四、运行结果
DevTools listening on ws://127.0.0.1:50996/devtools/browser/8d43e43e-ca09-4513-b9bd-0517cf980a0e
INFO    2023-03-01 10:32:23,623 [test_login.py_16]      ------用例前置工作:打开浏览器------
INFO    2023-03-01 10:32:25,086 [basepage.py_36]        查找百度首页-登录按钮 - 元素('id', 's-top-loginbtn')成功!
INFO    2023-03-01 10:32:25,123 [basepage.py_44]        点击:百度首页-登录按钮 - 元素('id', 's-top-loginbtn')成功
INFO    2023-03-01 10:32:28,032 [basepage.py_36]        查找输入登录账号 - 元素('id', 'TANGRAM__PSP_11__userName')成功!
INFO    2023-03-01 10:32:28,129 [basepage.py_54]        输入:在输入登录账号 - 元素('id', 'TANGRAM__PSP_11__userName')输入文本值(xxx)成功
INFO    2023-03-01 10:32:28,157 [basepage.py_36]        查找输入登录密码 - 元素('id', 'TANGRAM__PSP_11__password')成功!
INFO    2023-03-01 10:32:28,282 [basepage.py_54]        输入:在输入登录密码 - 元素('id', 'TANGRAM__PSP_11__password')输入文本值(xxx)成功
INFO    2023-03-01 10:32:28,332 [basepage.py_36]        查找点击登录按钮 - 元素('id', 'TANGRAM__PSP_11__submit')成功!
INFO    2023-03-01 10:32:28,603 [basepage.py_44]        点击:点击登录按钮 - 元素('id', 'TANGRAM__PSP_11__submit')成功
ERROR   2023-03-01 10:32:48,863 [basepage.py_66]        查找登录成功与否 - 元素('class name', 'user-name')失败!



DevTools listening on ws://127.0.0.1:51175/devtools/browser/213f651a-8cb3-4d27-9f03-db5466c6614e
INFO    2023-03-01 10:32:54,779 [test_login.py_16]      ------用例前置工作:打开浏览器------
INFO    2023-03-01 10:32:56,132 [basepage.py_36]        查找百度首页-登录按钮 - 元素('id', 's-top-loginbtn')成功!
INFO    2023-03-01 10:32:56,172 [basepage.py_44]        点击:百度首页-登录按钮 - 元素('id', 's-top-loginbtn')成功
INFO    2023-03-01 10:32:58,292 [basepage.py_36]        查找输入登录账号 - 元素('id', 'TANGRAM__PSP_11__userName')成功!
INFO    2023-03-01 10:32:58,374 [basepage.py_54]        输入:在输入登录账号 - 元素('id', 'TANGRAM__PSP_11__userName')输入文本值(xxx)成功
INFO    2023-03-01 10:32:58,406 [basepage.py_36]        查找输入登录密码 - 元素('id', 'TANGRAM__PSP_11__password')成功!
INFO    2023-03-01 10:32:58,512 [basepage.py_54]        输入:在输入登录密码 - 元素('id', 'TANGRAM__PSP_11__password')输入文本值(xxx)成功
INFO    2023-03-01 10:32:58,539 [basepage.py_36]        查找点击登录按钮 - 元素('id', 'TANGRAM__PSP_11__submit')成功!
INFO    2023-03-01 10:32:58,600 [basepage.py_44]        点击:点击登录按钮 - 元素('id', 'TANGRAM__PSP_11__submit')成功
INFO    2023-03-01 10:33:09,474 [basepage.py_36]        查找登录成功与否 - 元素('class name', 'user-name')成功!
INFO    2023-03-01 10:33:09,523 [basepage.py_68]        查找登录成功与否 - 元素('class name', 'user-name')成功!
INFO    2023-03-01 10:33:09,524 [test_login.py_24]      ------用例后置工作:关闭浏览器------
F



----------------------------------------------------------------------
Ran 2 tests in 50.878s

FAILED (failures=1)

以上就是Web端Selenium基于OPM模型自动化测试框架的大体模式,实际上还有很多可以优化的地方,比如增加测试报告、测试结果自动发送邮件、实现CI/CD等。或许后续有时间可以继续做补充优化分享给大家。

以上就是本期文章的所有内容,感谢观看,如果对您有帮助请点赞关注+收藏,一键三连,多谢支持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值