appium testng 失败自动保存截图

发表于:2017-11-20 17:05

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

 作者:_梅子_    来源:51Testing软件测试网采编

  在做androidUI自动化时,常用的登陆场景,需要判断登陆成功后,成功跳转到主页。以下是我demo里的判断
  Assert.assertTrue(driver.currentActivity().equals(".ui.activity.MainActivity"), "正常登录,进入主页");
  获取当前的activity和目标activity做对比。预期一致则通过case,失败此case报错,此方法则不会执行。
  那么失败的时候我们会想要获取到当前屏幕的截图。
  我是这样做的
  1.try catch捕捉报错。
  try {
              Assert.assertTrue(driver.currentActivity().equals(".ui.activity.MainActivity"), "正常进登录,进入主页");
          } catch (Exception e) {
          }
  2.创建监听器,监听错误
  package listener;
  import java.io.File;
  import java.io.IOException;
  import java.text.DateFormat;
  import java.text.SimpleDateFormat;
  import java.util.Date;
  import org.apache.commons.io.FileUtils;
  import org.openqa.selenium.OutputType;
  import org.testng.ITestResult;
  import org.testng.TestListenerAdapter;
  import base.BaseTest;
  import io.appium.java_client.MobileElement;
  import io.appium.java_client.android.AndroidDriver;
  /**
   * @des 截图监听
   *
   */
  public class ScreenShotListener extends TestListenerAdapter {
      @Override
      public void onTestFailure(ITestResult tr) {
          super.onTestFailure(tr);
          //调用屏幕截图方法
          captureScreenShot(tr);
      }
      /**
       * @des 失败用例,屏幕截图保存
       * @param result
       */
      public void captureScreenShot(ITestResult result) {
          //BaseTest.getDriver()封装好,获取driver
          AndroidDriver<MobileElement> driver=BaseTest.getDriver();
          //获取屏幕截图
          File srcFile = driver.getScreenshotAs(OutputType.FILE);
          DateFormat dateFormat = new SimpleDateFormat("yyyyMMddhhmmss");
          File location = new File("screenshots");
          String dest = result.getMethod().getRealClass().getSimpleName() + "." + result.getMethod().getMethodName();
          File targetFile = new File(
                  location.getAbsolutePath() + File.separator + dest + dateFormat.format(new Date()) + ".png");
          System.out.println("----------------- file is " + targetFile.getPath());
          try {
              FileUtils.copyFile(srcFile, targetFile);
          } catch (IOException e1) {
              e1.printStackTrace();
          }
      }
  }
  3.配置监听器
  有两种配置方法
  1.在需要捕捉的类上方
  image.png
  2.在testng.xml里配置监听器
  image.png
  两种方式的差别在于,类上方配置,只能抓获这个类报错的截图。而testng.xml可以捕获全局。请记得Assert的地方加上try catch。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号