UI自动化测试截图中标记被点击元素的方法
来源:互联网 发布:mac ios 配置 jenkins 编辑:程序博客网 时间:2024/06/07 05:00
在UI自动化测试中,我们经常做的是在执行脚本出错时,会在出错的时候进行截图,然后通过截图对比脚本来分析出错原因,如果点击了某个元素后,页面跳转错误,点击元素之前在截图中标记被点击的元素,就可以提高分析原因的效率,基于这样的考虑,开发了一个在截图中标记被点击元素的方法。
1、截图基本方法
使用的时候,传入的参数可以去掉,根据自己的框架设定参数。
package **.utils;import java.io.File;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.Date;import org.aspectj.util.FileUtil;import org.openqa.selenium.OutputType;public class GetScreenShot extends IDriver { public static String getScreenShot(String taskId, String deviceId) { SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss"); String date = df.format(new Date()).toString(); String fileName = date + ".png"; try { IDriver.wait(1); driver.getScreenshotAs(OutputType.BYTES); File screen = driver.getScreenshotAs(OutputType.FILE); String filePath = "/Users/autotest/mtp_workspace/business/pic/" + taskId + "/" + deviceId; fileName = filePath + "/" + fileName; File screenFile = new File(fileName); FileUtil.copyFile(screen, screenFile); } catch (IOException e) { e.printStackTrace(); } return fileName; }}
2、在截图中标记被点击的元素
传入的参数filePath是上面截图方法返回的截图路径,被点击元素的x、y坐标以及宽度和高度,这里把元素属性x、y以及宽度高度乘以3,是因为默认的截图的分辨率扩大了3倍,这个值根据自己的截图方法进行修改。
ImageIO.write(bufferedImage, “png”, new FileOutputStream(filePath));这个方法是覆盖了之前filePath的截图,如果想生成新的截图,传入新的路径即可。
package *.utils;import java.awt.BasicStroke;import java.awt.Color;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import javax.imageio.ImageIO;import org.apache.log4j.Logger;public class DealPic { private static Logger logger = Logger.getLogger(DealPic.class); public static void getImage(String filePath, int x, int y, int width, int height) { File file = new File(filePath); // 截图中点击的元素用红色框标记 try { BufferedImage bufferedImage = ImageIO.read(file); Graphics2D graphics2d = (Graphics2D) bufferedImage.getGraphics(); graphics2d.setColor(Color.RED); graphics2d.setStroke(new BasicStroke(13)); graphics2d.drawRect(x * 3, y * 3, width * 3, height * 3); ImageIO.write(bufferedImage, "png", new FileOutputStream(filePath)); } catch (IOException e) { logger.error("Get screen shot failed!"); e.printStackTrace(); } }}
如何获取被点击元素的x、y、宽度和高度呢?
其实很简单,Selenium封装了这样一个方法方便获取,在RectAngle对象中
public static boolean tap(String locator) { boolean flag = false; try { WebElement element = driver.findElement(By.xpath(locator)); Rectangle rectangle = element.getRect(); int x = rectangle.x; int y = rectangle.y; int width = rectangle.width; int height = rectangle.height; String picName = GetScreenShot.getScreenShot(Crawler.taskId, Crawler.deviceId); DealPic.getImage(picName, x, y, width, height); NodeList.picList.add(picName); element.click(); flag = true; } catch (Exception e) { logger.error(locator + " not found, ignoired"); } return flag; }
这个方法是在点击元素之前,获取该元素的属性值,然后进行截图再标记被点击元素,当然,如果该元素找不到或者元素定位错误,这个方法是不会生效的,既然找不到该元素,也就没有截图以及标记的必要了,后面的处理也就是常规使用的@TearDown中进行当前页面截图了。
阅读全文
0 0
- UI自动化测试截图中标记被点击元素的方法
- 基于Selenium的UI自动化测试屏幕截图功能实践
- Selenium的UI自动化测试屏幕截图功能实例
- UI自动化高亮元素与截图
- Web UI自动化测试中处理页面元素过期问题
- UI 自动化高亮元素与截图小工具
- UI 自动化高亮元素与截图小工具
- monkeyrunner自动化测试工具--UI元素获取
- UI自动化测试(二)浏览器操作及对元素的定位方法(xpath定位和css定位详解)
- net自动化测试之道基于反射的UI自动化测试—激活方法
- 自动化测试工具selenium常见的元素定位方法
- 失控的UI自动化测试
- 使用VS2010中 编码的UI 测试 进行UI自动化测试
- UI自动化测试刷新页面方法
- app自动化测试5---定位元素方法
- 自动化测试框架元素定位常用方法
- Espresso UI自动化测试 二(点击事件)
- 自定义的组件中加入多个MXML标记的子UI元素
- 除了清空购物车,阿里年会的技术也超霸气!
- 第5章 Kotlin语言基础 《Kotin 编程思想·实战》
- HDU 1050 Moving Tables
- 第6章 类型系统 《Kotin 编程思想·实战》
- orgdilog
- UI自动化测试截图中标记被点击元素的方法
- 使用curl脚本监控web服务状态
- 第7章 面向对象编程(OOP) 《Kotin 编程思想·实战》
- 第8章 函数式编程(FP) 《Kotin 编程思想·实战》
- C++初始化参数列表对成员函数初始化
- ShareViewPager
- mysql:使用concat()方法遇到的问题
- 第9章 Kotlin与Java互操作(Interoperability) 《Kotin 编程思想·实战》
- 第10章 集合类与泛型 《Kotin 编程思想·实战》