執行testng appium用例失敗,自動截圖


新建一個截圖監聽類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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM