appium自动化,失败自动截图
1、创建监听器类TestNGListener,重写onTestFailure方法,里面定义了 监听的driver ,截图文件路径和名称
package utils; import cases.AppiumBasic;
import io.appium.java_client.AppiumDriver;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.testng.ITestResult;
import org.testng.TestListenerAdapter; import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date; public class TestNGListener extends TestListenerAdapter{ @Override
public void onTestFailure(ITestResult tr){
try {
super.onTestFailure(tr);
//调用屏幕截图方法
captureScreenShot(tr,tr.getMethod().getMethodName());
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
} public void captureScreenShot(ITestResult result,String name) {
AppiumDriver driver = AppiumBasic.getDriver();
File srcFile = driver.getScreenshotAs(OutputType.FILE);
String filepath = "E:\\appimage\\education_test";
DateFormat dateFormat = new SimpleDateFormat("yyyyMMddhhmmss");
try {
FileUtils.copyFile(srcFile, new File(filepath + File.separator +name+"-"+ dateFormat.format(new Date()) + ".png"));
} catch (IOException e1) {
e1.printStackTrace();
}
} }
2、driver的来源
package cases; import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.AndroidMobileCapabilityType;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.BeforeClass; import java.net.MalformedURLException;
import java.net.URL; public class AppiumBasic {
public static AndroidDriver driver; @BeforeClass
public void beforeClass() throws MalformedURLException {
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability(CapabilityType.BROWSER_NAME,"");
caps.setCapability("platformName","Android"); //测试平台
caps.setCapability("deviceName","127.0.0.1:62025"); //指定测试机的ID
caps.setCapability("appPackage","ai.avatec.android"); //被测APP包名
caps.setCapability("appActivity","ai.avatec.android.ui.main.view.MainActivity"); //被测APP入口activity
caps.setCapability("appWaitActivity","ai.avatec.android.ui.main.view.MainActivity");
caps.setCapability("noSign",true); //noSign表示不重签名,设置为true表示不重签名app
caps.setCapability(AndroidMobileCapabilityType.NO_SIGN,true);
//UNICODE_KEYBOARD表示unicode输入法,支持中文输入,支持键盘隐藏
caps.setCapability(AndroidMobileCapabilityType.UNICODE_KEYBOARD,true);
//重置输入法为设备原来的
caps.setCapability(AndroidMobileCapabilityType.RESET_KEYBOARD,true);
caps.setCapability("automationName", "UiAutomator2");
//每次启动时覆盖session,否则第二次后运行会报错不能新建session
caps.setCapability("sessionOverride",true);
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), caps);
} public static AppiumDriver getDriver()
{
return driver;
}
}
3、配置监听器
有两种配置方法
(1)有两种配置方法在需要捕捉的类上方

(2)在testng.xml里配置监听器

appium自动化,失败自动截图的更多相关文章
- Selenium2+python自动化67-用例失败自动截图【转载】
前言: 装饰器其实就是一个以函数作为参数并返回一个替换函数的可执行函数 上一篇讲到用装饰器解决异常后自动截图,不过并没有与unittest结合,这篇把截图的装饰器改良了下,可以实现用例执行失败自动截图 ...
- testng 失败自动截图
testng执行case failed ,testng Listener会捕获执行失败,如果要实现失败自动截图,需要重写Listener的onTestFailure方法 那么首先新建一个Listene ...
- TestNG监听器实现用例运行失败自动截图、重运行功能
注: 以下内容引自 http://blog.csdn.net/sunnyyou2011/article/details/45894089 (此非原出处,亦为转载,但博主未注明原出处) 使用Testng ...
- QTP场景恢复之用例失败自动截图
以下代码是在QC里运行QTP来执行脚本过程,当执行过程中发现用例失败后就会自动截图,然后把用例返回到最初始的状态,模拟了场景恢复的机制 Class QCImageErrorCapture Dim qt ...
- Webdriver+Testng实现测试用例失败自动截图功能
testng执行测试用例的时候,如果用例执行失败会自动截图,方便后续排查问题 1.首先定义一个截图类: package com.rrx.utils; import java.io.File;impor ...
- TestNG实现用例运行失败自动截图(转载)
转载自:https://blog.csdn.net/galen2016/article/details/70193684 重写Listener的onTestFailure方法 package com. ...
- python3+Appium自动化06-屏幕截图
截图方法 save_screenshot() 该方法直接保存当前屏幕截图到当前脚本所在文件位置 driver.save_screenshot('login.png') get_screenshot_a ...
- selenium2入门 断言失败自动截图 (四)
一般web应用程序出错过后,会抛出异常.这个时候能截个图下来,当然是极好的. selenium自带了截图功能. //获取截图file File scrFile= ((TakesScreenshot)d ...
- selenium2 断言失败自动截图 (四)
一般web应用程序出错过后,会抛出异常.这个时候能截个图下来,当然是极好的. selenium自带了截图功能. //获取截图file File scrFile= ((TakesScreenshot)d ...
随机推荐
- Linux 下编译安装OpenCV【转】
转自:http://www.cnblogs.com/emouse/archive/2013/02/22/2922940.html OpenCV 2.2以后版本需要使用Cmake生成makefile文件 ...
- xcode/Interface Build(IB)/iPhone模拟器/mac/组合键常用的命令集
1.Xcode常用快捷键: win+N:新建文件 win+shift+N:新建工程 win+O:打开工程或文件 win+S:保存 win+shift+S:另存为 win+Z:撤销一步 win+W:关闭 ...
- 【C++】const、volatile不能修饰没有this指针的成员函数
一般所有的成员函数都只有一个复本,当不同的对象调用成员函数时,为了区分是哪个成员在调用,会传入this指针. 当调用有const.volatile修饰的成员函数时,会相应的传入一个const.vola ...
- 《Java编程思想》笔记 第十九章 枚举类型
1.基本enum特征 所有创建的枚举类都继承自抽象类 java.lang.Enum; 一个枚举类,所有实例都要在第一句写出以 ,隔开. 如果只有实例最后可以不加 : 枚举类因为继承了Enum,所以再不 ...
- IIS7.0添加IP地址和域名限制
IIS7.0默认安装是没有“IP地址和域名限制”功能的,需要我们自己选择安装 1.windows系统的添加方式 控制面板--程序与功能--启用或关闭windows功能--internat inform ...
- redis发布订阅、HyperLogLog与GEO功能的介绍
一.发布订阅 1.模型 发布者发布消息,订阅者接收消息 2.API 2.1.publish 2.2.订阅 2.3.取消订阅 unsubsribe 2.4.其他api 二.HyperLogLog 极小空 ...
- Django remedy a security issue refer dos attack
Today the Django team is issuing multiple releases -- Django 1.4.8, Django 1.5.4, and Django 1.6 bet ...
- Spring的自动装配
在Spring中对自定义的引用类型注入时可以实现自动赋值.但是必须依赖set方法: 自动装配功能有两种: <!-- autowire:"byType" --根据class匹 ...
- 【cocos2d-js官方文档】九、cc.loader
概述 原来的cc.Loader被改造为一个单例cc.loader,采用了插件机制设计,让loader做更纯粹的事. 各种资源类型的loader可以在外部注册进来,而不是直接将所有的代码杂揉在cc.Lo ...
- dfs序七个经典问题[转]
dfs序七个经典问题 参考自:<数据结构漫谈>-许昊然 dfs序是树在dfs先序遍历时的序列,将树形结构转化成序列问题处理. dfs有一个很好的性质:一棵子树所在的位置处于一个连续区间中. ...