1. 程式人生 > >appium自動化,失敗自動截圖

appium自動化,失敗自動截圖

mat inf null tlist view IE list IT wid

1、創建監聽器類TestNGListener,重寫onTestFailure方法,裏面定義了 監聽的driver ,截圖文件路徑和名稱

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 = AppiumDemo.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的來源

public class AppiumDemo {
    public static AppiumDriver<WebElement> driver;
    @BeforeClass
    public void setup() throws Exception{
        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 AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), caps){
            @Override
            public WebElement scrollTo(String text) {
                return null;
            }

            @Override
            public WebElement scrollToExact(String text) {
                return null;
            }

            public void rotate(DeviceRotation deviceRotation) {

            }

            public DeviceRotation rotation() {
                return null;
            }
        };
    }
    public static AppiumDriver getDriver()
    {
        return driver;
    }
}

  3、配置監聽器

有兩種配置方法

(1)有兩種配置方法在需要捕捉的類上方

技術分享圖片

(2)在testng.xml裏配置監聽器

技術分享圖片 兩種方式的差別在於,類上方配置,只能抓獲這個類報錯的截圖。

appium自動化,失敗自動截圖