请看以下脚本:
'定义变量 Const micLong = 3 Const micString = 8 Const micRef = 32768 Const BN_CLICK = 245 '创建Extern对象的会话实例 Set oExtern = CreateObject("Mercury.ExternObj") '*************声明所有API函数方法******************* oExtern.Declare micLong,"FindWindow","user32.dll", _ "FindWindowA",micString,micString oExtern.Declare micLong,"FindWindowEx","user32.dll", _ "FindWindowExA", micLong,micLong,micString,micString oExtern.Declare micLong,"PostMessage","user32.dll", _ "PostMessageA",micLong,micLong,micLong,micRef+micLong oExtern.Declare micLong,"SetActiveWindow","user32.dll", _ "SetActiveWindow",micLong '***************************************************** '返回消息框窗口的句柄 hwndWindow = oExtern.FindWindow(vbNUllString,"hello") '返回确定按钮的句柄 hwndButton = oExtern.FindWindowEx(hwndWindow,0,vbNullString,"确定") '激活消息框窗口 oExtern.SetActiveWindow hwndWindow '发送点击事件消息给确定按钮 oExtern.PostMessage hwndButton,BN_CLICK,0,0 '释放对象 Set oExtern = Nothing |
分析:
以上脚本一共定义了4个API函数,分别是FindWindow、FindWindowEx、PostMessage、SetActiveWindow。第一个FindWindow是通过窗口title名来获取到窗口的句柄,FindWindowEx根据句柄和控件名来获取到控件的句柄,第三个函数PostMessage给控件传送消息,最后一个是SetActiveWindow代表激活窗口。脚本的执行过程主要是先返回窗口和控件的句柄,随后激活窗口,并为窗口下的按钮控件加入点击事件,最终释放对象。
3.9.4 总结
本节主要对Extern对象进行了详细讲解,并且介绍了一些较为基础的API函数的使用方法,以及在VBS中直接使用API。其实API在实际的自动化测试中应用的频率并不是非常高。一旦在自动化测试过程中遇到一些比较特殊的问题,或者QTP无法解决的问题导致无法继续自动化测试时,API就能显现出它强大的威力了。举一个简单的例子:当QTP操控Web中的选取文件路径对象时就会卡在Dialog对话框上,一旦QTP激活了file控件并弹出对话框后,QTP就会变成,无法停止,也无法继续进行后续脚本的运行状态。只有手动关闭此对话框才可继续执行后续脚本。此种情况就可以使用本节讲到的API来解决。其实Win32已经提供了非常丰富的API供开发人员进行使用,测试人员还可以利用它来实现更多,只有你想不到,没有你查不到。
知识点巩固和举一反三练习
在QTP环境下利用Win32 api最大化当前打开的浏览器窗口。
要求1:使用Extern对象。
要求2:准备一个最小化的IE浏览器窗口。
本文选自《51Testing软件测试作品系列》之九——《精通QTP——自动化测试技术领航》。
本站经人民邮电出版社和作者的授权,近期将进行部分章节的独家连载,敬请期待!
版权声明:51Testing软件测试网获人民邮电出版社和作者授权独家连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
相关阅读: