zoukankan      html  css  js  c++  java
  • Appium自动化中截图的问题

    在用Appium做UI自动化过程中,大家会发现测试报告很重要,而在测试报告中截图很重要。

    因为很多公司都是用Jenkins作为持续集成工具,所以要让执行自动化测试的人看明白自动化在跑什么,哪里失败了,关键节点都需要截图。

    怎么做呢,目前项目中是这么实现的:

    1.实现截图功能类:

    	public static String screenShot(ShipperAndroidEmulator ae) {
    		String dir = "screenshot"; // TODO
    		String time = new SimpleDateFormat("yyyyMMdd-HHmmss").format(new Date());
    		String screenShotPath = dir + File.separator + time + ".png";
    
    		AndroidDriver augmentedDriver = null;
    		augmentedDriver = ae.getAndroid();
    
    
    		try {
    			File sourceFile = ((TakesScreenshot) augmentedDriver).getScreenshotAs(OutputType.FILE);
    			FileUtils.copyFile(sourceFile, new File(screenShotPath));
    		} catch (Exception e) {
    			e.printStackTrace();
    			return "Failed to screenshot";
    		}
    
    		return screenShotPath.replace("\", "/");
    	}
    

    2.用screenShot实现错误处理类:

    	private void handleFailure(String notice) {
    		String png = LogTools.screenShot(this);
    		String log = notice + " >> capture screenshot at " + png;
    		logger.error(log);
    		if (GlobalSettings.baseStorageUrl.lastIndexOf("/") == GlobalSettings.baseStorageUrl.length()) {
    			GlobalSettings.baseStorageUrl = GlobalSettings.baseStorageUrl.substring(0, GlobalSettings.baseStorageUrl.length() - 1);
    		}
    		Reporter.log(log + "<br/><img src="" + GlobalSettings.baseStorageUrl + "/" + png + "" />");
    		Assert.fail(log);
    	}
    

    3.对所有appium界面操作类进行处理:

    	public void click(By by) {
    
    		expectElementExistOrNot(true, by, timeout);
    		try{
    			clickTheClickable(by,System.currentTimeMillis(),2500);
    			handleSuccess("Succeed to click " + by);
    		}catch(Exception e){
    			e.printStackTrace();
    			handleFailure("Failed to click " + by);
    		}
    		logger.info("Clicked " + by);
    	}
    

    测试报告如下:

     

    有截图

  • 相关阅读:
    Shell 脚本中调用另一个 Shell 脚本的三种方式
    Shell脚本的三种执行方式
    python selenium中Excel数据维护(二)
    python里面的xlrd模块详解(一)
    selenium处理iframe定位于切换问题解决办法
    Selenium在定位的class含有空格的复合类的解决办法整理
    SqlSugar ORM已经支持读写分离
    ASP.NET Core的Kestrel服务器
    服务是如何加载并运行的, Kestrel、配置与环境
    ASP.NET Core Web服务器 Kestrel和Http.sys 特性详解
  • 原文地址:https://www.cnblogs.com/appstest/p/5088974.html
Copyright © 2011-2022 走看看