新建一个截图监听类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

执行testng appium用例失败,自动截图的更多相关文章

  1. Selenium2+python自动化67-用例失败自动截图【转载】

    前言: 装饰器其实就是一个以函数作为参数并返回一个替换函数的可执行函数 上一篇讲到用装饰器解决异常后自动截图,不过并没有与unittest结合,这篇把截图的装饰器改良了下,可以实现用例执行失败自动截图 ...

  2. QTP场景恢复之用例失败自动截图

    以下代码是在QC里运行QTP来执行脚本过程,当执行过程中发现用例失败后就会自动截图,然后把用例返回到最初始的状态,模拟了场景恢复的机制 Class QCImageErrorCapture Dim qt ...

  3. appium自动化,失败自动截图

    1.创建监听器类TestNGListener,重写onTestFailure方法,里面定义了 监听的driver ,截图文件路径和名称 package utils; import cases.Appi ...

  4. 如何解决testng执行用例失败自动重跑问题

    注: 以下内容引自 http://blog.csdn.net/MenofGod/article/details/72846649 看过几个相关问题的帖子,内容类似,不过这篇解决问题的步骤和代码比较清晰 ...

  5. TestNG监听器实现用例运行失败自动截图、重运行功能

    注: 以下内容引自 http://blog.csdn.net/sunnyyou2011/article/details/45894089 (此非原出处,亦为转载,但博主未注明原出处) 使用Testng ...

  6. testng 失败自动截图

    testng执行case failed ,testng Listener会捕获执行失败,如果要实现失败自动截图,需要重写Listener的onTestFailure方法 那么首先新建一个Listene ...

  7. testng优化:失败重跑,extentReport+appium用例失败截图,测试报告发邮件

    生成的单html方便jenkins集成发邮件,= = 构建失败发邮件 参考:https://blog.csdn.net/galen2016/article/details/77975965 步骤: 1 ...

  8. Webdriver+Testng实现测试用例失败自动截图功能

    testng执行测试用例的时候,如果用例执行失败会自动截图,方便后续排查问题 1.首先定义一个截图类: package com.rrx.utils; import java.io.File;impor ...

  9. TestNG实现用例运行失败自动截图(转载)

    转载自:https://blog.csdn.net/galen2016/article/details/70193684 重写Listener的onTestFailure方法 package com. ...

随机推荐

  1. 【winform程序】自定义webrowser控件调用IE的版本

    修改注册表: bit: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROW ...

  2. java.util.Map.Entry接口

    java.util.Map.Entry接口主要就是在遍历map的时候用到,给你个例子:package test;import java.util.*;import java.util.Map.Entr ...

  3. 用java实现Simsimi小黄鸡接口

    package com.iask.webchat.chatmachine; import java.io.BufferedReader; import java.io.InputStream; imp ...

  4. FIR滤波器设计

    FIR滤波器的优越性: 相位对应为严格的线性,不存在延迟失真,仅仅有固定的时间延迟: 因为不存在稳定性问题,设计相对简单: 仅仅包括实数算法,不涉及复数算法,不须要递推运算,长度为M,阶数为M-1,计 ...

  5. JAVA内存区域和GC机制

    目录 Java垃圾回收概况 Java内存区域 Java对象的访问方式 Java内存分配机制 Java GC机制 垃圾收集器 Java垃圾回收概况 Java GC(Garbage Collection, ...

  6. Linux如何创建一个新进程

    2016-03-31 张超<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 Linux如何创建一个新进程 ...

  7. C# List 泛型用法

    List 类是 ArrayList 类的泛型等效类,某些情况下,用它比用数组和 ArrayList 都方便. 我们假设有一组数据,其中每一项数据都是一个结构. public struct Item{  ...

  8. 让 asp.net mvc 支持 带有+ _ 等特殊字符的路由

    最近配置微信 业务域名 时,需要在服务器的根目录中上传一个文本文件,而这个文本文件需要放这样的目录中: 于在就在 服务器目录中创建了对应的文件夹,并将kuPv.txt上传,但是访问时,却怎么也访问不到 ...

  9. Arcgis - Personal Geodatabase 和 File Geodatabase的区别.

     一.平台支持: 1.Personal Geodatabase:仅可在Windows 上运行: 2.File Geodatabase:跨平台支持,可在Windows 及UNIX.linux上运行. 评 ...

  10. spring 学习 AOP和IOC

    自11开始接触三大框架,至今已俞5载, 当时风光无限的ssh,现在还在被广泛使用,并有扩大之势的只有spring了 spring主要特性,是广为使用的AOP(面向切面)和IOC(控制反转) 1.其中, ...