51Testing丛书连载:(十三) QTP自动化测试实践

发表于:2008-8-05 16:27

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陈能技    来源:51Testing软件测试网

  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
{
    public class Automation
    {
        // 引入user32.dll中的FindWindow函数
        [DllImport("user32.dll", CharSet = CharSet.Auto)]
        static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
        // 查找控件方法
        public IntPtr FindControl(string ClassName,string ControlName)
        {
            // 返回控件句柄
            return FindWindow(ClassName, ControlName);
        }
    }
}


  可用下面的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软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号