设计自己的基于Selenium 的自动化测试框架-Java版(3) - 给框架分分层

给我们的框架分为3层,分别是叫逻辑层,数据层,对象层。 这三层的存储格式都用xml来表示。

1.逻辑层 (test Scripts)

既用来描述我们步骤的逻辑,像点击,输入,选中,对比这些操作。

逻辑层基于关键字驱动,格式如下

Command

Target

Value

Click

OKButton

Type

AEdit

123

上面的每一行将每一个步骤划分为 Command,target , value 三个部分。

在xml上的表示方法如下:

[html]view plaincopy
  1. <Functioncommand="openHomePage"target=""value=""/>
  2. <Functioncommand="sleep"target="5"value=""/>
  3. <Htmlcommand="click"target="uimap(HostnamePage).NetworkTab"value=""/>
  4. <Htmlcommand="type"target="uimap(HostnamePage).HostNameFiled"value="data(Dataxml1).test1"/>

2.数据层 (test Data)

用来存储被测试的数据,实现测试数据和测试逻辑的分离, 和测试逻辑脚本的重复利用。

定义格式如下

[html]view plaincopy
  1. <Data>
  2. <propertyname=”test1”>testdata1</property>
  3. <propertyname=”test2”>testdata2</property>
  4. <Data>

3.对象层 (UIMaps)

用来存储被测试网也对象,按Page来保存文件,我们把这个叫做UIMaps。

[html]view plaincopy
  1. <Targets>
  2. <xpathname=”AEdit”>//input[@=’a’]</xpath>
  3. <xpathname=””>//input[@id=’ok’]</xpath>
  4. </targets>
  5. <Messages>
  6. <messagename=”ALabelText”>
  7. <contentlanguage=“ENU”>HelloWorld!</content>
  8. <contentlanguage=“CHS”>你好扯淡!</content>
  9. </message>
  10. </Messages>

页面上的element 放在 Targets标签下, 页面上的文字内容放在messages标签下,这里面开可以定义不同语言的文字。

另外我们需要一个config.xml文件用来保存一些环境配置信息。

如下所示:

[html]view plaincopy
  1. <host>localhost</host>
  2. <port>4444</port>
  3. <baseUrl>http://10.12.23.38</baseUrl>
  4. <browser>iexplore</browser>
  5. <!--==websitetestconfig===-->
  6. <language>en</language>
  7. <timeout>10</timeout>
  8. <retryTimes>3</retryTimes>

基于上面我们就有了下图我们整个SAFX框架的结构图。

SAFX Controller 是入口,需要传入config.xml 作为配置信息。

SAFX Controller 还控制了整个测试脚本执行的过程,通过调用Selenium ClientAPI 去操作浏览器实现我们的步骤。

SAFX 同时实现了 异常处理 和Report输出的功能。

当然花这么多时间写个框架首先总有几点好处,要不费那劲干嘛。

1.一个是实现脚本,数据,对象库分离, 提高脚本重用,方便页面变化之后的维护。

2.用xml 编写脚本文件,不需要编译,随时修改调试。

3.自定义report的输出,这边默认设置了3中格式的 result(xml, html, xls)

设计自己的基于Selenium 的自动化测试框架-Java版(3) - 给框架分分层相关推荐

  1. 设计自己的基于Selenium 的自动化测试框架-Java版(2) - 定义自己的工作流程

    设计自己的基于Selenium的自动化测试框架-Java版(2) -定义自己的工作流程 Work flow chart 上图是整个工作流程,红色虚线上面的需要手动来完成,红色虚线下面的实现自动化. 我 ...

  2. 设计自己的基于Selenium 的自动化测试框架-Java版(1) - 为什么selenium还需要测试框架?...

    本人自动化测试接触时间不久,如有误导,概不负责. 既然有了selenium这个开源的自动化的工具,为什么还要我们自己再去写一个框架? Selenium是自动化的工具,当然是可以用在测试领域,但他不是为 ...

  3. 预见自动化测试 | 基于 SELENIUM 的自动化测试架构

    基于 SELENIUM 的自动化测试架构 非常感谢各位查阅本篇文章,笔者在此感谢各位. 目前市面上有分门别类的自动化测试工具,这篇文章将讨论开源自动化测试工具 Selenium的使用,以及围绕该工具进 ...

  4. 基于selenium的自动化测试脚本编写-python

    浏览器操作 1 启动浏览器并打开网页 2 拖拽操作 3 弹窗处理 4 后退前进关闭 5 cookies操作 异常处理 1 等待 11 sleep函数 12 隐示例等待 13 使用javascript ...

  5. 【算法设计与分析】Dijskra算法代码:Java版

    import java.util.Arrays;public class DijkstraAlgorithm {public static void main(String[] args) {char ...

  6. Java应用程序安全框架

    <从零打造项目>系列文章 工具 比MyBatis Generator更强大的代码生成器 ORM框架选型 SpringBoot项目基础设施搭建 SpringBoot集成Mybatis项目实操 ...

  7. python3.7界面设计_基于selenium+Python3.7+yaml+Robot Framework的UI自动化测试框架

    前端自动化测试框架 项目说明 本框架是一套基于selenium+Python3.7+yaml+Robot Framework而设计的数据驱动UI自动化测试框架,Robot Framework 作为执行 ...

  8. 基于Selenium与Pytest框架的Web UI自动化测试系统的设计与实现

    摘要 随着互联网的高速发展,软件技术日新月异,产品更新换代的加快等,始终都离不开一个最核心的要素就是保证产品的质量,测试人员则在其中担任着不可或缺的角色.测试人员的主要工作职责就是通过各种测试手段去发 ...

  9. 基于python的界面自动化测试-基于Selenium+Python的web自动化测试框架

    一.什么是Selenium? Selenium是一个基于浏览器的自动化测试工具,它提供了一种跨平台.跨浏览器的端到端的web自动化解决方案.Selenium主要包括三部分:Selenium IDE.S ...

最新文章

  1. android 有效载荷大图,避OOM
  2. Github代码上传和下载
  3. 理解Javascritp中的引用
  4. 2007年淘宝网手机销量统计报告
  5. 小爱同学100个奇葩回复_小米小爱音箱Pro开箱评测,看到的不仅是全面升级更是小米loT的高速发展...
  6. C# switch语句中,可以放哪些类型
  7. JavaScript算法【特殊篇】数组去重的十种实用方案
  8. Spring实战(六)自动装配的歧义性
  9. MRS,MSR指令详解
  10. JSP 高校后勤报修管理系统myeclipse开发mysql数据库bs框架java编程serlvet(MVC)结构详细设计
  11. 即时通讯WebSocket
  12. EsgynDB 使用JDBC UDR访问远程Trafodion的几个问题小结
  13. 对于ros中launch文件的解读
  14. 数据结构和算法基础(4)——树
  15. 深度探讨,共创未来 | 思爱普(SAP) 助力碧桂园实现数字化转型
  16. 中国书信礼仪 (三)
  17. mysql 表锁 MDL锁 行锁
  18. 安装hadoop集群模拟大数据集群踩到的坑(一)
  19. 排版设计常用术语和常识
  20. 5_echo命令的作用

热门文章

  1. 关于Ip地址分配规则(IPV4)
  2. c语言斐波那契数列前20项每行5个数,求c++:源程序。前20项斐波那契数列 ,要求输出的时候每行输出五个...
  3. linux activemq修改端口号,linux下 activemq集群配置
  4. html5经纬度 ios,iOS 如何根据经纬度来定位位置(示例代码)
  5. python函数的四个特点_Python面向对象三大特征之封
  6. Informix日志报错:Could not do a physical-order read to fetch netxt row
  7. sql server 多用户 并发_Tinyid:滴滴开源千万级并发的分布式ID生成器
  8. 自动化测试十大疑问解答 软件测试人必看
  9. 一文带你用python做自动化测试
  10. 在PyCharm环境下使用Jupyter Notebook