IWeb4j 项目解决web自动化回归测试痛点!

IWeb4j 项目思想

  • IWeb项目的测试用例使用数据驱动测试,当下数据驱动使用最多的无非是excel、yaml、json、数据库(后续通过SpringDataJPA实现数据库驱动)作为数据驱动的载体,四种方式思想都一样只是实现方式不同。
    目前先实现excel数据源驱动。通过开源的Easypoi文档导入导出工具完成,后续会新增数据库、yaml文件的数据驱动方式。
  • 页面元素定位使用封装的关键字库测试,通过dom4j解析xml方式实现。
  • 整体项目属于混合模型开发测试,整体项目只用显示等待解决元素加载可见可编辑问题。

项目主要技术

该项目主要技术

技术用途备注
springboot后端项目框架后期可扩展平台
lombokjava实用工具通过注解减少代码量
testNG测试用例执行套件控制测试流程
allure魅力的测试报告工具测试报告
Easypoi文档的导入导出工具数据驱动,读写excel测试用例
dom4jxml的dom树解析工具元素关键字的实现载体
log4j2日志工具记录系统日志
selenium通过WebDriver API 操作页面模拟真实用户操作

IWeb4j 各包目录结构说明

项目目录

项目使用流程

  • 配置文件的加载
    IWeb4j项目使用yaml配置文件
    eg:页面关键字维护的页面元素xml文件通过yaml配置文件路径

然后通过yaml的key注入配置文件路径

  • excel测试用例读写通过Easypoi实现
    excel维护测试用例也是一种很常见的方式,和常用的功能测试用例几乎没有差别,只是对excel的表头进行数据映射处理。如下:

  • 页面元素关键定位通过dom4j解析xml的dom树实现元素定位
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vdz3WtYn-1603158139938)(https://upload-images.jianshu.io/upload_images/16753854-a3699efb4ed3c1df.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

  • 维护的页面元素关键字也是通过映射成数据对象进行获取

  • 测试用例维护
  • 映射成dto数据的对象

  • 通过Easypoi封装的工具类拿到一个集合,然后遍历集合进行读取excel用例进行测试,,测试过程中可以把页面实际的测试结果批量回写到相应的实际结果栏中,这样可可以完成手工记录的繁琐。​
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CLts1uzy-1603158139947)(https://upload-images.jianshu.io/upload_images/16753854-1b8462554edd270d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

  • 整个项目的页面关键字工具类UIElementUtil异常捕获中加入allure的截图功能
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ukSlycuu-1603158139949)(https://upload-images.jianshu.io/upload_images/16753854-2d7669a7c42a5c6e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
    这样在元素定位失败或者超时异常后都可以捕获异常并截图至allure报告中。

  • 测试完成后会在项目下更新allure-results文件夹,然后通过allure命令即可访问测试报告(如果想集成jenkins网上有很多教程很简单),allure-results的注解使用点击查看
    效果如下:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ua1LLqpw-1603158139950)(https://upload-images.jianshu.io/upload_images/16753854-51ca33de6f3f0d47.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]

IWeb4j 项目解决web自动化的痛点

  • 对于web自动化项目来说痛点在于:元素加载不稳定,自动化运行不稳定、测试数据的后期维护力度大等因素让很多人不愿意去做web端的自动化测试。但是如果解决好上面的情况,web自动化的痛点自然就得到了解决。而IWeb4j 项目只使用显示等待来解决元素加载问题,页面元素通过关键字定位更易于理解,测试用例使用excel管理更易于上手,自动化运行中使用allure截图来捕获异常作为证据的查看更直观。

IWeb4j 更改测试数据及维护说明

  • 页面元素定位数据维护(web自动化测试建议使用css定位效率更高)
    页面元素维护通过维护xml文件来解决,如图:
  • 测试用例维护通过excel来维护,如图:
  • 需要通过easypoi来获取excel的数据源,然后通过封装UIElementUtil工具类的sendInput()/clickPop()/clickButton()…等方法的调用来完成元素的操作。
public void loginCase() {
        UIElementUtil.clickButton("百度登录","点击右上角登录按钮",driver);
        UIElementUtil.clickButton("百度登录","点击账号密码登录按钮",driver);
        String loginDatasPath = "src/main/resources/pagesxml/baidulogin.xls";
        List<EasyPoiDatas> loginDatas = EasyPoiUtil.importExcel(loginDatasPath,1,1, EasyPoiDatas.class);
        //过滤Easypoi读取表格多出两行为空的数据
        List<EasyPoiDatas> loginDatasNotEmPty = loginDatas.stream().filter(loginData -> loginData.getName() != null || loginData.getDesc() != null || loginData.getFlag() != null || loginData.getPwd() != null).collect(Collectors.toList());
        //新的集合存放新的测试数据和测试结果
        List<EasyPoiDatas> collectS = new ArrayList<>();
        for (EasyPoiDatas loginData :loginDatasNotEmPty ) {
            try {
                //由于EasyPoiUtil工具类对于空表格返回为null,sendKeys方法源码中不允许为null或0,这做下转换
                UIElementUtil.sendInput("百度登录","登录账号",driver,loginData.getName()==null? "" : loginData.getName());
                UIElementUtil.sendInput("百度登录","登录密码",driver,loginData.getPwd()==null? "" : loginData.getPwd());
                UIElementUtil.clickButton("百度登录","登录按钮",driver);
                String getResponseTip = driver.findElement(AccountData.TIPS).getText();
                loginData.setActual(getResponseTip);
                WebElement element = UIElementUtil.getElementByKeyword("百度登录","登录按钮",driver);
                AssertWebUtil.textToBePresentInElement(element,"期望结果",driver);
            } catch (Exception e) {
                e.printStackTrace();
            }
            collectS.add(loginData);
        }
        if (collectS.size() == 0){
            System.out.println("测试用例无数据,请查看");
        }else {
            //3.将所有实际获取结果写入实际结果中
            EasyPoiUtil.exportExcel(collectS,"测试用例集","登录用例", EasyPoiDatas.class,loginDatasPath, true);
        }
    }

更多测试技术分享、学习资源以及一些其他福利可关注公众号:【Coding测试】获取:
Coding测试

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值