51Testing丛书连载:(五十一)精通QTP——自动化测试技术领航

发表于:2012-2-23 11:12

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

 作者:余杰 赵旭斌    来源:51Testing软件测试网

  实例2:运行测试脚本时最小化QTP窗口。

  在执行自动化测试过程中,经常会出现QTP窗口挡住测试程序界面的现象,特别是在进行脚本调试的时候,需要去判断到底问题是出在哪个环节上,如果QTP把界面给挡住了,将会非常不方便,每次都需要使用Tab键来进行切换才可以,不过当有了WIN32 API之后,就可以直接调用它的ShowWindow方法来直接把QTP自身对象窗口最小化:

Const SW_MINIMIZE = 6

'声明user32.dll中的ShowWindow方法

Extern.Declare micLong,"ShowWindow","user32.dll","ShowWindow",micLong,micLong

'高亮QTP窗口对象

Window("text:=QuickTest.*").highlight

'获取QTP自身的窗口对象的句柄属性

ohwnd = Window("text:=QuickTest.*").GetROProperty("HWND")

'调用ShowWindow方法 并加入最小化窗口参数

Extern.ShowWindow ohwnd,SW_MINIMIZE

'等待两秒钟

wait 2

  分析:

  代码中的第一行相信读者应该在之前的例子中已经掌握了它的用法。接着脚本通过描述性编程的方式来获取到QTP对象窗口(此处也可以使用对象库,为了讲解方便,直接用描述性编程来代替),并使用GetROProperty方法获取到其QTP对象窗口的句柄属性值,并加入到后面ShowWindow函数的第一个参数中,作用是定位需要更改窗口显示状态的窗口对象,第二个参数则是代表需要更改的窗口状态,此处为SW_MINIMIZE,即代表最小化窗口。

  注意:QTP本身并没有加入反HOOK注入,因此,同样可以把QTP自身程序窗口加入到对象库中并对其进行一些操作。以上脚本就是直接通过Window("text:=QuickTest.*")获取到QTP对象窗口的,获取到之后即可方便做操作。

  小提示:QTP主要提供了3种DLL的调用方式,这3种调用方式分别为Extern、CreateObject、DotNetFactory,而这3种调用方式都分别对应着不同类型的DLL。首先Extern所调用的DLL为WIN32 API - DLL,Createobject所调用的是ActiveX类型的DLL,这类DLL其实应用的最多,AOM \ EOM等都是此类型的DLL,最后一种.NET Factory是直接调用.Net framework 或者.NET自定义的DLL。这些希望读者能够把它们区分开。

3.9.2  VB API转化QTP API

  在前一小节中大致讲解了如何在QTP中调用WIN32 API以及Extern的语法和实际使用。但是如果不熟悉WIN32 API,每次使用WIN32 API之前都需要使用API viewer查找到相应的函数声明语句,找到这些相应的函数声明语句之后还不可以直接进行使用,因为QTP本身的语法只支持VBS,而VBS并不支持直接调用WIN32 API,只能将之前的函数声明语句转化成Extern调用声明语句来适应QTP的使用。其实细心的读者一定会发现它们之前的转化是有一定的规律的。因此,完全可以去实现一个自动化转化的过程,当然在这里要告诉大家一个好消息,印度的QTP大师Tarun Lalwani已经为我们完成了这样一个工作,这样就可以直接拿来使用了。这里通过一个简单的例子来讲解如何一步步实施。

  1.下载并安装API Viewer tools

  由于.NET程序不像在Visual Studio中有API Viewer 这样的工具,因此,需要自行去下载一个,或者计算机上同时也装有Visual Studio 6.0即可。此处提供一个下载地址:

  http://www.activevb.de/rubriken/apiviewer/index-apiviewer.html

  2.打开API Viewer并加载相应的库

  打开时窗口中的很多控件都是Disable状态,即不可用的,因为此时还没有对程序加载相应的库文件,API Viewer是空的状态,现在加载相应的WIN32库文件,点击File→Open,选择Win32api.apv,如图3-111所示。

图3-111

  在选中WIN32api.apv后,点击打开按钮,就会加载相应的库。所有控件的数据都被自动填入并可供选择使用,如图3-112所示。

图3-112

32/3<123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号