如何在RFT中比较两个图像文件?
下面脚本截获屏幕图像并保存到文件中,然后比较两个图像文件:
public void testMain(Object[] args)
{
CaptureScreen.captureScreen("C://tmp1.jpg");
startApp("calc");
计算器window().activate();
CaptureScreen.captureScreen("C://tmp2.jpg");
boolean result = compareImages("C://tmp1.jpg","C://tmp2.jpg");
if(result)
{
System.out.println("The two image are same!");
}
else
{
System.out.println("The two image are different.");
doImageDiff("C://tmp1.jpg","C://tmp2.jpg","C://tmp3.jpg");
}
}
captureScreen的写法参考:
http://blog.csdn.net/Testing_is_believing/archive/2010/01/23/5247785.aspx
通过比较像素点的方式比较两个图像文件:
public static boolean compareImages(String expectedImage, String actualImage)
{
BufferedImage expected = null, actual = null;
try
{
FileInputStream in = new FileInputStream(expectedImage);
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(in);
expected = decoder.decodeAsBufferedImage();
in.close();
in = new FileInputStream(actualImage);
decoder = JPEGCodec.createJPEGDecoder(in);
actual = decoder.decodeAsBufferedImage();
in.close();
}
catch (Exception e) {
System.out.println("Error in BitmapOps#compareImages: error reading images: " + e);
return false;
}
if (expected == null || actual == null)
return false;
if (expected.getHeight() != actual.getHeight() || expected.getWidth() != actual.getWidth())
return false;
for (int y = 0; y < expected.getHeight(); ++y)
{
for (int x = 0; x < expected.getWidth(); ++x)
{
if (expected.getRGB(x, y) != actual.getRGB(x, y))
return false;
}
}
return true;
}
分析出两个图像文件不相等的地方,把差异的地方高亮显示并保存到图像文件:
public static void doImageDiff(String expectedImage, String actualImage, String diffImage)
{
BufferedImage expected = null, actual = null;
try
{
FileInputStream in = new FileInputStream(expectedImage);
JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(in);
expected = decoder.decodeAsBufferedImage();
in.close();
in = new FileInputStream(actualImage);
decoder = JPEGCodec.createJPEGDecoder(in);
actual = decoder.decodeAsBufferedImage();
in.close();
}
catch (Exception e) {
System.out.println("Error in BitmapOps#doImageDiff: error reading images: " + e);
return;
}
try {
BufferedImage difference = new BufferedImage(expected.getWidth(), expected.getHeight(), expected.getType());
if (expected == null || actual == null)
{
System.out.println("Error in BitmapOps#doImageDiff: Expected image or actual image is null");
return;
}
if (expected.getHeight() != actual.getHeight() || expected.getWidth() != actual.getWidth())
{
System.out.println("Error in BitmapOps#doImageDiff: Images are not the same size");
return;
}
for (int y = 0; y < expected.getHeight(); ++y)
{
for (int x = 0; x < expected.getWidth(); ++x)
{
int rgb = expected.getRGB(x, y) - actual.getRGB(x, y);
difference.setRGB(x, y, rgb);
}
}
FileOutputStream out = new FileOutputStream(diffImage);
JPEGImageEncoder encoder =
JPEGCodec.createJPEGEncoder(out);
encoder.encode(difference);
out.flush();
out.close();
}
catch (Exception e) {
System.out.println("Error in BitmapOps#doImageDiff: error writing image: " + e);
}
}
分享到:
相关推荐
RFT8.1的破解文件及说明。
轻松将html、doc、rft文件转换成txt文件的软件
IBM RFT 文档包IBM RFT 文档包
RFT相关资料RFT相关资料RFT相关资料RFT相关资料RFT相关资料RFT相关资料RFT相关资料
RFT(Rational Function tester)中文操作指南(上) 好不容易找到中文版的操作指南,留给需要的朋友
RFT脚本执行工具。它实现了加载测试脚本批量执行、计划测试任务、自动发送邮件通知和报告、测试前自动编译、设置执行次数、生成Html格式测试报告、显示测试报告、设置测试报告背景颜色/Logo/链接、重新验证Fail和...
RFT帮助文档 RFT资料 IBM Rational Functional Tester文档
RFT8.0 LICENSE,RFT8.0和7.0相比,的确是改进了不少,大家一起学习RFT8.0吧,有了这个jar包就可以正常使用了
RFT8.0安装手順.xls RFT8.0安装手順.xls
RFT脚本执行工具。不要解压,通过插件安装的方式安装于RFT。可通过工具栏按钮开启,会加载所选文件夹内所有脚本;或通过右键菜单开启(RFT处于Java模式)。 它实现了加载测试脚本批量执行、计划测试任务、自动发送...
网上下的不管用,跟别人要了一个,现共享。另外平常使用RFT的,希望能够留个联系方式,大家平常交流下技术问题。fxy860709@hotmail.com
IBM出的中文视频,介绍IBM RFT功能测试工具,是快速学习、了解掌握IBM RFT的极好资料
IBM RFT 文档2IBM RFT 文档2IBM RFT 文档2IBM RFT 文档2
比较两个文件是否相同 添加去掉路径名后的符号 添加文件到文档菜单 清空文档 获取文件类型 获得快捷方式信息 获得文件大小 计算文件的校验和 设置文件日期 读 table-textfile 到 StringGrid 读取二进制文件使用ASCII...
最新的 itext JAR 包括 rft支持
最新的IBM RFT 培训课件,主讲:聂健 培训地点:广州 培训时间:10.28-10-30
rft的文档,自己找的,感觉还行,主要是给自己用的,做自动化测试用
IBM出的中文视频,关于IBM RFT性能测试工具的概述
IBM RFT 框架ITCL三层结构应用例子
ibm 自动化测试,基本的自动化测试的 描述,容易理解