appium自動化,失敗自動截圖
阿新 • • 發佈:2018-06-28
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自動化,失敗自動截圖