3.3.3 基于GUI对象识别的测试工具原理
目前,大部分自动化功能测试工具,尤其是商业的测试工具,都是基于GUI对象识别技术来设计的。基于GUI层面的测试需要与各种界面元素打交道,而且不同的编程语言和开发工具开发的应用程序在界面的表现、事件的响应上都略有不同,因此,设计基于GUI层面的自动化功能测试工具会更为复杂些。
Windows的API中封装了很多可用于自动化测试编程的函数,例如FindWindow、GetWindowRect等函数。这些函数可在编程语言或脚本代码中进行调用,从而实现自动化测试编程。例如,下面的C#代码封装了user32.dll中的FindWindow函数, 实现查找指定类型和名称的控件的功能:
using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; namespace LowLevelGUITest |
可用下面的C#代码来调用这个封装的函数:
private void button1_Click(object sender, EventArgs e) { Automation automation = new Automation(); // 查找名为AUT的窗体 IntPtr p = automation.FindControl("WindowsForms10.Window.8.app.0.378734a","AUT"); // 判断是否找到控件 if (p == IntPtr.Zero) { Console.WriteLine("找不到指定的控件!"); } } |
如果想进一步了解GUI对象识别的原理,可以打开Visual Studio.NET 2005自带的Spy++,如图3.5所示。
Spy++中的搜索查找控件功能就是这种对象识别原理的体现。例如,在图3.6所示的界面中,可以看到某个指定的窗口的句柄、标题、类。
版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像。51testing软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们。