JavaEE鸿蒙应用开发HTML&JS+前端Python+大数据开发人工智能开发电商视觉设计软件测试新媒体+短视频直播运营产品经理集成电路应用开发(含嵌入式)Linux云计算+运维开发C/C++拍摄剪辑+短视频制作PMP项目管理认证电商运营Go语言与区块链大数据PHP工程师Android+物联网iOS.NET

Appium自身非必现bug影响自动化测试正常运行?Try-Catch帮您解决

来源:黑马程序员

浏览16291人

2019.10.30

在进行软件UI自动化测试的时候,经常会出现非被测软件bug导致的测试执行失败,常见原因包括:测试脚本的问题、网络问题、产品UI的变更等等。还有一种情况是测试工具自身的bug,特别是偶现的bug并且开源的自动化测试工具还没有修复该bug的时候,我们关心的是如何绕过这个已知bug继续使用appium进行其他场景的自动化测试,本文通过一个实例进行分析,分两步阐述


一、第一步-----------使用appium测试抖音软件

目标

使用appium进行抖音主页的自动化测试,发现导致脚本执行失败的非必现appium自身的bug

具体场景

使用appium连接安卓手机后运行脚本打开抖音主页

 1572419553138953.png

 

使用脚本向上滑动屏幕刷新抖音内容

使用脚本对新出现的内容进行点赞等操作

发现自动化脚本在进行点赞操作时有时脚本会运行失败,排查后发现原因是有时appium执行向上滑动操作失败

因为向上滑动操作在实际编写的很多自动化测试脚本中都用到,这步失败会影响后面的测试场景。怎样解决这个问题进行下一步测试?


二、第二步--------------使用try-catch跳过已知bug继续进行脚本测试

目标

跳过已知的bug继续运行自动化测试脚本试图发现其他场景的bug

步骤

1.定义向上滑动的方法

private void huadong() {
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;
int y1 = height * 3 / 4; // 上滑的开始点,从y1开始也就是屏幕的四分之三处
int y2 = height * 1 / 4; // 上滑的结束点,到y2结束也就是屏幕的四分之一处
TouchAction tAction = new TouchAction(driver);
tAction.press(width / 2, y2).waitAction(Duration.ofSeconds(1 / 4)).moveTo(width / 2, y1).release().perform();
}

2.使用try-catch调用huadong()方法,接收appium滑动出错后抛出的异常,使脚本可以继续运行

try {
        huadong();
    } catch (Exception e) {
        System.out.println("滑动出错");
    }

3.继续运行脚本的其他的点击操作,比如点赞、转发等等

总结

在使用appium进行ui自动化时由于该工具本身的一些偶现bug导致脚本执行失败,可以通过java中的try-catch进行异常捕获后继续运行剩余的脚本,保证了测试脚本的正常运行。同时出现异常时打印的语句也可以在appium server的控制台中进行查看

1572419583692338.png