Ranorex入门指南47 – 用对象库中的截屏图片进行比较

上一小节,给大家介绍了如何将保存在硬盘的图片加载到内存,用于比较目的。其实在实际操作中,还可以直接将需要的图片保存在对象库中,然后直接拿过来用。这一节我们就来看看是如何进行的。

首先,我们必须在对象库中添加某个对象的图片。打开对象库视图,然后右击你要截屏的对象,然后选择”Capture New Sceenshot”菜单,这样系统会自动将该对象当前的截屏添加到对象库中,注意,待测对象必须存在。如下图所示:

47-1

 

从图上我们可以看到,系统自动生成一个Screenshot1的图片在对象PushButton下面,这就是PushButton的当前截屏。

然后,我们就可以在项目里面使用如下的代码了:
void ITestModule.Run()
{
Mouse.DefaultMoveTime = 300;
Keyboard.DefaultKeyPressTime = 100;
Delay.SpeedFactor = 1.0;
ScreenshotCompare() ;
}

void ScreenshotCompare()
{
repo.SimpleGUI.SearchTimeout = new Duration(1000);
if (repo.SimpleGUI.SelfInfo.Exists())
{
repo.SimpleGUI.Self.Close();
}
Host.Local.RunApplication(“c:/SimpleGUI.exe”, “”, “”, false);
repo.SimpleGUI.Self.Activate();

repo.SimpleGUI.ChangeColor.Click();
Thread.Sleep(1000);
Bitmap MyScreenshot = repo.SimpleGUI.PushButtonInfo.GetScreenshot1();
Imaging.FindOptions myFindOptions = new Imaging.FindOptions(0.95);
Validate.CompareImage(repo.SimpleGUI.PushButton, MyScreenshot, myFindOptions);
}

同样,最重要的还是在最后几行,这边稍微有点令人难以理解的是代码:
Bitmap MyScreenshot = repo.SimpleGUI.PushButtonInfo.GetScreenshot1();
这里面有一个PushButtonInfo的属性,我的理解是它代表PushButton对象的信息集,然后在它上面调用GetScreenshot1()函数来获得Screenshot1的位图数据,返回给MyScreenshot这个Bitmap对象。注意,如果你在对象库里面的对象是OBJ,它下面的图片叫PIC的话,那么,你要是用下面的代码来获得其位图数据:
Bitmap MyScreenshot = repo.SimpleGUI.OBJInfo.GetPIC();

Leave a comment

请输入正确的验证码