WEB UI自动化框架设计

1、框架简介

1、1 框架设计思想

        本框架是由selenium+testng+java+maven编写的数据驱动框架,对于用例的开放设计性比较强,分离了页面元素、页面元素操作、用例和检查点,也就是说,每个页面的元素、操作、检查点单独封装了,之后在用例中用到什么操作都可以调用之前写的。

        对于测试数据,是单独保存在excel文件中的,同一个功能有正向和逆向测试,只要把测试数据保存在excel中,多种逆向可能性都可以列出来,包括检查的数据,程序会一一读取,并反馈检查点是否正确,这就避开了每个正向或逆向测试都要写一遍用例的麻烦。

        对于失败的用例,我在监听器中加入了失败用例重跑功能,可设置重跑次数。因为有的时候用例的失败可能并不是出现bug,也许是网络原因或其他原因,可以再跑一次验证结果。

        对于测试结果,我这里有保存log日志,可查看每个用例都做了哪些操作,用了什么数据、检查点等,最后运行是否正确都有记录,同时还有testng的运行结果,里面统计了运行成功和失败的用例。还改写和report,使运行失败的用例截图放在运行结果中,以便查看问题。更值得一提的是,框架里加入了发送邮件功能,可以配置邮箱数据,待程序运行完成后吧带截图的结果发送到指定的邮箱。

2、utils封装

2、1 从txt文件读取配置数据

        Txt文件放置一些配置数据,保存在config文件夹下,内容格式如:name=lily。

目前放置的是驱动的路径和

 

2、2选择操作系统和浏览器

    封装了选择操作系统和浏览器的方法,浏览器在xml文件中定义,操作系统由代码获取。

 

2.3日志获取和保存

       日志方法用到的插件是log4j,方法主要是配置日志输出格式和路径,调用时先初始化

static Logger logger = Logger.getLogger(BaseParpares.class.getName());

 

2.4从excel文件读取测试数据

       传参为文件名和sheet(用例名),返回的是参数值数组,具体可查看testng的@DataProvider。这里读取数据的时候,如果有多行会一并读取,每行都是一条测试用例。

 

2.5 获取随机数

 

2.6 连接数据库

 

2.7 获取用例描述

 

3、selenium常用操作封装

       Seleniumutils,按不同功能分了好几个类,封装同类功能各种操作方法,其中Browser是对浏览器操作的封装,包含了driver的定义,由于所有的操作都需要driver,其他的类都需要继承Browser,不会出现no session的情况。

 

4、BaseParpares

       基本数据和设置,所有的用例都从这里开始,继承这个类的数据,写了beforeclass和afterclass的操作,每个用例的class执行前后都会执行这两个方法。还有@BeforeMethod和@AfterMethod,每个用例@Test执行前后都会执行这两个方法。以及每个用例用到的数据提供者配置,获取到用例的包和用例编码,对应excel文件的文件名和sheet名。以及获取用例名称、路径、classpath等的方法。

 

5、用例设置

       用例的设置包括三大块,pages、pagehandlers、testcases。

Pages:是每个页面的元素,调用org.openqa.selenium.By ,定义元素定位,如:

public static final By L_LOGIN = By.id("login_frame");

之后在pagehandlers中被调用。

Pagehandlers:是每个页面的功能和检查点封装。注意检查点不需要异常处理,且调用检查方法时用Assert.assertTrue();因为其他地基本方都做了异常处理,如果这个也用异常处理的话整个用例就不会停止也不会失败,报错后会一直运行,增加了不必要的等待时间。

Testcases:就是测试用例,调用pagehandlers的功能组合成用例。每个类都需要继承BaseParpares 。@Test的时候加入测试数据的读取@Test(dataProvider="testData") ,这样才能读取到对应的测试数据。这里读取数据的时候,如果有多行会一并读取,每行都是一条测试用例。所以要把用例先封装好,把测试数据作为方法的参数一并读取,再用@Test(dataProvider="testData") 获取excel数据同时传给一个用例。

 

6、监听器

TestResultListener:用例失败之后截图,通过重写testng的监听方法,需要导入org.testng.TestListenerAdapter;继承TestListenerAdapter。重写onTestFailure,加入截图的功能。同时加入了onTestStart、onTestSuccess等,onTestStart与base中的BeforeMethod有点重复,视情况重写。

这个监听器可放在BaseParpares,因为每个用例的类都继承了BaseParpares,放置方法@Listeners({TestResultListener.class})

       RetryListener:是重跑失败的测试用例。通过implements IAnnotationTransformer写了新接口,implements 是实现多个接口, 接口的方法一般为空的, 必须重写才能使用,还需要加载配置文件config.properties。

       EmailableReporterListener:是运行完成后获取结果并发送到指定邮箱的监听器,重写了testng的EmailableReporter2,单独谢了发送邮件功能在这里调用,在testng套件里无论哪一级调用都得不到最终结果,所以最终选择在reporter调用,源码查看org.testng.reporters. EmailableReporter2。

监听器都配置在testng.xml文件中,才可以加载。

    <listeners>

        <listener class-name="com.test.listener.RetryListener" />

        <listener class-name="com.test.listener.TestResultListener" />      

        <listener class-name="com.test.listener.EmailableReporterListener"/>

    </listeners>

 

以上就是对于框架的介绍,代码我就不贴出来了,前面的博客有记录testng的一些扩展功能,博客上文提的失败用例截图,发送邮件等等,有兴趣可以看看

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值