执行testng appium用例失败,自动截图

发表于:2018-8-01 13:24

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:testway    来源:博客园

  新建一个截图监听类ScreenShotListener ,重写onTestFailure方法,里面定义了 监听的driver ,截图文件路径和名称
  package com.fsssc.htsgl.utils;
  import io.appium.java_client.android.AndroidDriver;
  import java.io.File;
  import java.io.IOException;
  import org.apache.commons.io.FileUtils;
  import org.openqa.selenium.OutputType;
  import org.openqa.selenium.WebElement;
  import org.testng.ITestResult;
  import org.testng.TestListenerAdapter;
  import com.fc.boxapk.ApkBoxOperation;
  public class ScreenShotListener extends TestListenerAdapter {
  @Override
  public void onTestFailure(ITestResult tr) {
  //安卓程序的操作类
  ApkBoxOperation apkRemoteControl = ApkBoxOperation.getInstance();
  //监控截图的driver
  AndroidDriver<WebElement> driver = apkRemoteControl.driver;
  // 截图文件夹
  File path = new File("screenshots");
  //截图位置及文件名  名称为 标识 + 类名 + 方法名
  String name = path.getAbsolutePath() + File.separator + MysqlUtils.executionFlag+"_"+MysqlUtils.exeClassName +"."+ tr.getMethod().getMethodName() + ".png";
  //
  File screenShot = driver.getScreenshotAs(OutputType.FILE);
  try {
  FileUtils.copyFile(screenShot, new File(name));
  } catch (IOException e) {
  e.printStackTrace();
  }
  }
  }
  测试用例的实现
  package com.fsssc.htsgl.testcases;
  import java.io.IOException;
  import junit.framework.Assert;
  import org.testng.annotations.Listeners;
  import org.testng.annotations.Test;
  import com.fc.boxapk.ApkBoxOperation;
  import com.fc.htgl.utils.MysqlUtils;
  import com.fc.htgl.utils.PropsUtil;
  import com.fc.htgl.utils.ScreenshotListener;
  // 监听
  @Listeners({ScreenShotListener.class})
  public class DevTest{
  //安卓程序初始化
  ApkBoxOperation apkBoxOperation  = ApkBoxOperation.getInstance();
  // 赋值一个执行编码给执行标识
  String executionFlag = PropsUtil.timeToString();
  @Test
  public void testCase() throws IOException {
  //本次类名赋值给变量
  MysqlUtils.exeClassName = Thread.currentThread().getStackTrace()[1].getClassName();
  // 执行标识赋值给变量
  MysqlUtils.executionFlag = executionFlag;
  // 安卓程序登录
  apkBoxOperation.courierLogin("13488883323", "4566656");
  // 执行完毕 断言失败,执行截图
  Assert.assertFalse(true);
  // 关掉app
  apkBoxOperation.driver.closeApp();
  }
  }
  执行后截图文件名:
  20161101151840_com.fsssc.htsgl.testcases.DevTest.testCase.png

      上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号