selenium+java+testNG+pageObject深入理解自动化测试框架
关于selenium+java+testNg的环境配置文章,本文主要讲述测试框架的架构实现。
我们知道,搭建一个合理的测试框架能够将自动化测试做大做大,一个合适的自动化测试框架能够极大的降低代码的数量,便于后续的维护。文章先从测试框架的模型,思想讲起,然后将各个部分做实现。
一、框架包结构如下图
以下依次分析下每个包中的工作
- com.bfm.pageElements:yaml文件存放页面要素对应的xpath;
- com.bfm.properties:yaml文件存储相关的公共要素,比如iframe,url;
- com.bfm.VO:class类编写页面对象,比如LoginPageVO;
- com.bfm.task:class编写每个页面中需要的动作;比如loginTask();
- com.bfm.utils:class编写相关的工具包;
- com.bfm.tests:class编写相关的测试类;比如loginSucessTest();
- com.bfm.suites:class编写测试调用类;
二、该框架中使用的主要思想
该测试结构中,主要使用的思想有,pageObject面向界面做处理、使用反射机制对界面数据进行传递、使用yaml文件管理界面要素的定位、使用分层机制编程。
首先分析一下该框架中的主要类,类结构如下。
依次分析下各个类的作用
- loginPageElements.yaml:存放的登录界面所需要的主要要素,以后界面做调整后,只需要调整对应要素的查找方式,比如,userName对应的name;
- url.yaml:存放相关的访问地址,比如,登录界面的地址,登录地址调整后,只需要调整该访问地址即可;
- iframes.yaml:存放iframes的地址,对应操作界面的iframe调整后,调整该文件中的配件即可;
- yamlFileDirector:相关静态变量,存放相关yaml文件存放的物理路径,以上配置文件的路径调整后,修改该文件的路径配置即可;
- WebDriverConstruction:更加传递的浏览器类型,初始化相应的浏览器即可;包含fireFox,chrome等;
- pageElementSearch:查询对应yaml文件在界面中的要素;
- TreeNodeSearch:用于导航窗口的处理;
- SwitchToWindow:用于切换iframes;
- XmlToJavaVO:转换xml数据到界面VO对象中,界面数据的传递,使用反射机制,处理不同的界面VO;
- XMLReader:读取xml文件的类;
- YamlReader:读取yaml文件的类;
- ElementOperator:静态类,包含界面要素需要处理的方法,比如处理,文本框的清空,下拉框的操作等;
- LoginTask:实现登录界面中的功能;比如:登录,重置等;
- loginPageTest:测试类,实现登录成功,登录失败等;
- loginTestSuite:调用不同的测试类一起执行;
三、框架中的层次结构
下面讲述一下该框架的层级结构
- 测试数据层:独立封装数据;
- 页面对象层:封装页面对象,共页面任务层做调用;
- 页面任务层:实现各个独立页面的操作;
- 测试层:实现页面测试;
- 测试组件层:实现测试层的管理调用;
到这里就介绍完了我实现的web测试主要思想,后续应该会做进一步的优化。欢迎大家吐槽。框架代码:http://download.****.net/detail/boer521314/9396376
接口自动化框架:https://github.com/laiqb/AutoUI
相关配置文件:以yaml文件形式存储界面要素,便于以后统一管理界面要素,界面要素的调整,只需要调整对应页面的yaml文件即可。转载一篇关于yaml文件处理的文章:selenium+java自动化测试框架之元素管理篇(yaml);