安庆网站建设价格,php网站开发多线程开发,营销型企业网站测评表,马鞍山网站网站建设什么是Page Object模式
Page Object 见名知意#xff0c;就是页面对象#xff0c;并将页面元素定位方法和元素操作进行分离。在实际自动化测试实战过程中#xff0c;我们一般对脚本的实现分为三层#xff1a; (1)对象层#xff1a; 用于存放页面元素定位和控件操作 (2)逻…什么是Page Object模式
Page Object 见名知意就是页面对象并将页面元素定位方法和元素操作进行分离。在实际自动化测试实战过程中我们一般对脚本的实现分为三层 (1)对象层 用于存放页面元素定位和控件操作 (2)逻辑层 则是一些封装好的功能用例模块 (3)业务层 则是我们真正的测试用例的操作部分
PageObject 的优点
减少代码冗余业务和实现分离降低代码维护成本
PageObject 的六大原则 The public methods represent the services that the page offers/公共方法表示页面提供的服务 Try not to expose the internals of the page/尽量不要暴露页面的内部 Generally don’t make assertions/Page设计中不要出现断言应该写在测试用例类中 Methods return other PageObjects/方法返回其他PageObject Need not represent an entire page/不需要表示整个页面 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.878sFAILED (failures1)以上就是Web端Selenium基于OPM模型自动化测试框架的大体模式实际上还有很多可以优化的地方比如增加测试报告、测试结果自动发送邮件、实现CI/CD等。或许后续有时间可以继续做补充优化分享给大家。 以上就是本期文章的所有内容感谢观看如果对您有帮助请点赞关注收藏一键三连多谢支持