QTP测试不同对象

来源:互联网 发布:怎么看网络有几个人用 编辑:程序博客网 时间:2024/05/17 02:11

1.     使用QTP测试Windows对象

Desktop对象的使用:

 

通过Desktop对象,可以访问Windows的桌面顶层对象。Desktop对象包括CaptureBitmapChildObjectsRunAnalog方法。

(1)    使用CaptureBitmap方法来截屏

使用CaptureBitmap方法,可以把屏幕对象的截屏保存为图像文件。例如,下面的代码把屏幕截图保存到指定的文件,并且当存在相同文件时,覆盖原来文件。

(2)    使用ChildObjects方法获取某个对象中包含的对象列表

使用ChildObjects方法可以获取到某个测试对象中包含的所有对象,例如,下面的脚本通过Desktop对象的ChildObjects方法获取当前桌面上所有名为“无标题-记事本”的窗口对象。

(3)    使用RunAnalog方法运行低级录制过程

QTP支持录制鼠标和键盘操作的低级过程,这种录制模式叫“Ana

log Recording”。Desktop对象的RunAnalog方法可以运行录制下来的Analog脚本,例如,下面的脚本运行名为“Track1Analog脚本。

SystemUtil对象的使用:

可以利用SystemUtil对象,在测试脚本的运行过程中,控制应用程序和进程,SystemUtil对象包括BlockInputCloseDescendentProcessesCloseProcessByHwndCloseProcessByIdCloseProcessByNameColseProcessByWndTitleRunUnBlockInput方法。

(1)    使用Run方法运行文件或程序

Run方法的使用格式如下:

Run file, [params], [dir], [op], [mode]

   下面解释各参数的作用:

   1)“file”参数是必须输入的,是需要被运行的程序,或者是需要被打开的文件。

   2)“params”是可选输入参数,指启动应用程序所需的参数。

   3)“dir”是可选参数,指应用程序或文件的默认工作目录;

   4)“op”是可选参数,指文件打开的模式,包括“open”、“edit”、“explore”、“find”、“print5种模式。

   5)“mode”参数是可选参数,用于指定程序窗口打开时的状态

应用:"SystemUtil.Run"

     syntax:   SystemUtil.Run file,[params],[dir],[op],[mode]

     比方打开F盘为食谱的记事本:

     SystemUtil.run"notepad","F:\食普.txt"
         或者打开网页:

         Dim strURL
             strURL="www.baidu.com"
             SystemUtil.Run "IEXPLORE.EXE",strURL


 

(2)    在脚本运行过程中屏蔽鼠标和键盘

在脚本运行过程中,屏蔽鼠标和键盘的输入可以使用SystemUtil对象的BlockInputUnBlockInput方法。BlockInput用于屏蔽输入,UnBlockInput用于解除屏蔽。可以使用BlockInput方法防治测试脚本运行过程中被意外的鼠标和键盘操作干扰。

 应用:"SystemUtil.BlockInput" and "SystemUtil.UnblockInput"

     syntax: SystemUtil.BlockInput

                  SystemUtil.UnblockInput

     将这两句分别加在脚本的前后,脚本执行过程中将会避免键盘和鼠标的输入与点击干扰。

 

(3)    关闭进程

SystemUtil对象中包含多个可用于关闭进程的方法,包括CloseDescendentProcessCloseProcessByHwndCloseProcessByIdCloseProcessByNameCloseProcessByWndTitle

(1)    CloseDescendentProcess用于关闭所有由QTP打开的进程。

2CloseProcessByHwnd用于关闭包含指定句柄的窗口的进程。

3CloseProcessById用于关闭指定进程IDPID)的进程。

4CloseProcessByName用于关闭指定名称的进程。

5CloseProcessByWndTitle用于关闭拥有指定标题的窗口的进程。

应用:

syntax: SystemUtil.CloseDescendentProcesses
            这一句将会关闭由QTP打开的所有进程。

   eg.

   SystemUtil.BlockInput  '锁住键盘和鼠标。

   SystemUtil.CloseDescendentProcesses '关闭以前由QTP打开的进程。

   SystemUtil.Run "3.txt","","D:\","open"  '打开D盘下名为“3.txt”的文件(这个文件存在)。

    SystemUtil.Run "iexplore.exe","www.baidu.com","C:\Program Files\Internet Explorer" '用IE打开百度网。

   SystemUtil.UnblockInput '解锁。


 

ClipBoard对象的使用:

ClipBoard对象代表Windows中的剪贴板对象,在QTP中,可以通过ClipBoard对象来访问剪贴板对象,设置剪贴板的数据。

(1)      ClipBoard对象介绍

可以在测试脚本运行过程中,使用ClipBoard对象来复制、剪切和粘贴文本对象,ClipBoard对象拥有与VB语言中的ClipBoard对象一样的方法,包括:

q        Clear:用于清空ClipBoard中的数据。

q        GetData:用于获取ClipBoard中的数据。

q        GetFormat:用于获取ClipBoard中的数据格式。

q        GetText:用于获取ClipBoard中的文本数据。

q        SetData:用于向ClipBoard设置数据。

q        SetText:用于向ClipBoard设置文本数据。

(2)      ClipBoard对象的使用方法

在测试过程中,可以利用ClipBoard对象作为缓存测试数据的容器使用,例如,下面的测试脚本首先清空ClipBoard中的所有数据,然后,设置ClipBoard中的文本为“TEST”,最后,从ClipBoard中获取缓存的文本。

标准Windows控件的基本属性和方法:

   QTP中,对于各种标准Windows控件,都提供了

一些公共的、通用的基本属性和基本方法,熟练掌握这些基本的属性和方法,有助于更加有效地编写测试脚本。

(1)      使用Exist属性来判断空间是否存在

    可以通过访问控件的Exist属性来判断控件是否存在于当前打开的应用程序中。例如,下面的测试脚本用于判断Login窗口是否存在。

(2)      使用CheckProperty检查控件属性

使用CheckProperty方法可以实现与标准检查点相类似的功能,例如,下面的测试脚本使用CheckProperty检查控件的属性是否与指定的值相一致,如果一致,则在测试结果中标识为Pass,否则标识为Fail

可看到,其实现的功能与CheckPoint实现的功能基本一致。但是,使用方式会比插入CheckPoint更为灵活些。

(3)      使用GetROProperty获取控件属性

GetROProperty用于返回测试对象的当前属性,例如,下面的测试脚本用于获取Login窗口的标题属性。

各类标准Windows控件的测试:

    Windows标准控件包括各种基于W

indows APIMFC开发的应用程序中的各种控件,在QTP中,对于这些基本控件都有相应的测试对象来控制,例如,Button对应WinButtonCheckBox对应WinCheckBox等。

1)        Dialog对象的测试:Dialog对象是指Windows的对话框控件。对Dialog对象的常用测试是Activate方法,用于定位对话框,使其处于激活状态。Activate方法模拟用户点击对话框的标题栏,定位到对话框,通常,在操作对话框中的控件之间,都需要先使用这个方法,确保当前对话框可用。

2)        Static对象的测试:Static对象是指Windows静态文本、图像控件,可以用Check方法插入对图像的检查点,在录制过程中,选择菜单“Insert|Checkpoint|Bitmap Checkpoint”,然后,选择指定的图像的区域,如图12.4所示。

3)        WinButton对象的测试:WinButton对象的常用测试操作是Click方法,用于模拟用户单击按钮的事件,例如,下面的代码模拟用户单击“OK”按钮。

4)        WinCalendar对象的测试:WinCalendar对象是指日期和时间选择控件,例如,Windows搜索助理界面的指定日期控件就是WinCalendar对象,如图12.5所示。WinCalendar对象常用的测试操作时设置日期,需要使用SetDate方法,如以下代码所示。

SetDate方法的参数是“Date”,可以使用两种方式传入:

   1)日期字符串型:格式为d-MMM-yyyy,其中d表示日,MMM表示英文月份缩写,yyyy是年份。

2)使用VBScript的日期函数,例如DateNowIsDateCDate等。下面的脚本把

日期控件的日期设置为当天。

   3)除了设置日期外,还可以使用WinCalendar对象的SetTime方法来设置事件。

5)        WinCheckBox对象的测试:WinCheckBox对象的常用测试操作是Set方法,用于模拟用户把某个选择项选上。例如,下面的脚本用于把Customer Name选择框勾选上。Set方法的参数可以输入“ON”,“OFF”,或者是“DIMMED3种状态的值。

6)        WinComboBox对象的测试:WinComboBox对象的常用测试操作时Select方法,用于模拟用户从下拉框中选择某项内容,例如,下面的脚本从“Fly From”下拉框中选择起飞地点,从“Fly To”下拉框中选择终点。另外,WinComboBox对象还提供一些方法来方便地获取到下拉框的内容,例如,下面的脚本获取下拉

框中的所有项总数。而下面的脚本将获取Index1的下拉框想对应的内容。

7)        Window对象的测试:Window对象是指窗体控件,Window对象的常用测试操作是ActivateMaximizeRestore方法,例如,下面的脚本首先定位到记事本的窗口,然后,最大化记事本的窗口,最后,回复记事本窗口大小。另外一个常用的测试操作时通过GetROProperty方法获取窗口的标题,判断标题是否为指定的名称,例如,下面的脚本用于获取记事本窗口的标题。

8)        WinEdit对象的测试:WinEdit对象是常见的输入框,其中常用的测试操作是Set方法,可用于模拟用户往输入框中输入字符,例如,下面的脚本在Name输入框中输入文本“CNJ”。另外,如果需要输入加密的文字,则可使用SetSecure方法,例如,下面的脚本在“Password”输入框中输入加密后的密码字符串。

9)        WinEditor对象的测试:WinEditor对象与WinEdit对象的使用方法比较类似,同样可以通过Set方法和SetSecure方法来模拟用户输入未加密或加密的内容。也可以使用Type方法来模拟用户往输入框中输入文本,例如,下面的脚本往记事本中输入一段文字,然后,按下Enter键。

10)     WinList对象的测试:WinList对象是指列表控件,例如,在Flight程序中,选择航班的界面中航班列表就是一个WinList控件,如图12.6所示。其常用的测试操作是Select方法,用于模拟用户选择列表中的一项内容,例如,下面的脚本选择列表中的指定名称的内容。另外,也可以通过指定Index来选择内容,例如,下面的脚本指定选择Index2的某项内容。

11)     WinListView对象的测试:WinListView对象是指列表视图控件,例如,Windows资源管理器右边窗口就是一个WinListView控件。其常用的测试操作时Select方法,用于模拟用户选

择列表视图中的一项内容,例如,下面的脚本通过名称指定选择SysListView32中的某项内容。也可以通过指定Index来选择,例如,下面的脚本通过指定Index2,选择SysListView32中的第3项的内容。另外,WinListView对象还提供了一个ExtendSelect方法,用于模拟用户按下CTRL键进行多选,例如,下面的脚本同时选择两项内容。

12)     WinMenu对象的测试:WinMenu对象是指菜单控件,其常用测试操作是Select方法,用于模拟用户选择某个菜单项,例如,下面的脚本通过指定菜单名称来选择记事本的文件新建菜单。也可以通过指定Index来选择菜单,例如,下面的脚本选择记事本的文件打开菜单。可以使用BuildMenuPath方法来构建菜单路径,

例如,下面的脚本先用BuildMenuPath方法来构建菜单选择路径“文件|新建”,然后使用Select方法执行菜单选择动作。BuildMenuPath方法也可以使用Index来指定菜单项,例如,下面的脚本中构建的菜单选择路径是“文件|打开”。

13)     WinRadioButton对象的测试:WinRadioButton对象是指单选按钮控件,例如,Flight程序的主界面中的几个机舱等级选择项就是WinRadioButton对象,其常用的测试操作时Set方法,例如,下面的脚本模拟用户单击“Fisrt”单选按钮,选择一等舱的机票。

14)     WinScrollBar对象的测试:WinScrollBar对象是指滚动条对象,可以使用其中的SetNextLineNextPagePreLinePrevPage这几个方法来模拟用户拖动滚动条的动作,例如,下面的脚本模拟用户单击Excel应用程序中的滚动条,让其向下滚动1行。另外,也可以模拟用户拖动滚动条,让其向下滚动1页,例如,下面的代码。还可以使用Set方法来把滚动条设置在某个位置,如下面的脚本所示。可以使用GetROProperty方法先获取ScrollBarmaxscrollpos属性,取得可滚动的最大范围,再根据这个值来决定设置滚动条的位置,这样可避免使用Set方法设置的位置超出范围,例如,下面的脚本把滚动条设置在中间位置。

15)     WinSpin对象的测试:WinSpin对象是数值选择控件,例如,

Windows的日期和时间属性窗口中的年份选择控件就是一个WinSpin对象,如图12.7所示。其常用的测试操作时NextPrevSet方法。例如,下面的脚本先判断日期控件中的日期是否为2008年,如果是,则使用WinSpinNext方法将日期调到2009年。如果想把日期调前一年,则使用WinSpinSet方法,如以下代码所示。

16)     WinStatusBar对象的测试:WinStatusBar对象是指状态栏控件,其常用的测试操作时通过GetContent获取状态栏的所有信息,例如,下面的脚本获取记事本的状态栏信息。但是GetContent取得时状态栏中的所有信息,而状态栏可能会分成若干部分,例如Windows资源管理器中的状态栏,如图12.8所示。如何分别取得每一部分的信息呢?方法是使用WinStatusBarGetItem方法,例如,下面的脚本首先使用GetItemsCount方法获取到状态栏部分的个数,然后使用GetItem方法循环取得每一部分的状态栏信息。

17)     WinTab对象的测试:WinTab对象是指页签控件,例如,Windows的日期和时间属性窗口中就有一个包含3个页签的WinTab对象,其常用的测试操作时Select方法,例如,下面的脚本模拟用户选择日期和时间属性窗口中的3个页签。另外,Select方法的输入参数也可以是IndexIndex0开始,下面的脚本与

上面的脚本的效果是一样的。WinTab对象还提供了一个叫“GetSelection”的方法,用于确定当前所选的页签是哪个,例如,下面的脚本首先使用指定Index的方式来选择第二个页签,然后通过GetSelection方法获取当前所选的页签名称。

18)     WinToolbar对象的测试:WinToolbar对象是指工具栏控件,其常用的测试操作时Press方法,用于模拟用户单击工具栏上的某个按钮,例如,下面的脚本用于模拟用户单击Windows资源管理器的工具栏上的“向上”、“后退”和“搜索”按钮。Press的输入参数也可以是IndexIndex1开始,例如,下面的脚本实现了与上面脚本一致的功能。

19)     WinTreeView对象的测试:WinTreeView对象是指属性选择控件,例如,Windows资源管理器中左边的窗口就包含一个WinTreeView控件,如图12.10所示。其常用的的测试操作包括SelectExpandExpandAllCollapse等方法。例如,下面的脚本用于在资源管理器中选择某个磁盘。也可以使用ExpandAll方法来展开全部节点,例如,下面的脚本用于展开C盘的所有文件夹目录节点。而收起处于展开状态的节点则可以使用Collapse方法,例如,下面的脚本用于收起处于展开状态的C盘节点。

20)     WinObject对象的测试:WinObject对象用于测试那些不能被QTP识别并归类成特定控件类型的Windows控件,其拥有与其他各类控件对应的测试对象相同的基本属性和方法,例如Exist属性、Click方法、Type方法、GetROProperty方法、CheckProperty等。

 


2.     使用QTP测试ActiveX对象

Object属性的使用:

ActiveX控件对象与Windows标准控件一样,可以使用Exist属性来判断控件是否存在,另外,一些公共的也跟Windows标准控件类似,例如ClickTypeCheckPropertyGetROProperty等。

除此之外,使用QTPActiveX测试对象来测试ActiveX标准控件时,还可以利用其提供的Object属性来获取ActiveX控件的内部属性和方法。它能取得与GetROProperty方法一样的效果,并且可取到更多的ActiveX控件的内部属性,如果用GetROProperty方法,可使用下面的脚本获取到ActiveX控件的text属性:

使用GetROProperty方法获得MaskEdBox控件的text属性

DateOfFlight=Window(“Flight Reservation”).ActiveX(“MaskEdBox”).GetROProperty(“text”)

Msgbox DataOfFlight

而如果使用Object属性,则可以用下面的脚本实现:

使用Object属性来进一步访问和获取MaskEdBox控件的text属性

DateOfFlight=Window(“Flight Resevation”).ActiveX(“MaskEdBox”).Object.FormattedText

Msgbox DateOfFlight

另外,通过Object属性还可以方便地访问到ActiveX控件的其他内部属性,例如下面的脚本获取控件的字体属性:

获取控件的字体属性

Font=Window(“Flight Reservation”)ActiveX(MaskEdBox”).Object.Font

Msgbox Font

AcxUtil对象的fireEvent方法的使用:

AcxUtil对象可用于操作ActiveX控件,使用FireEvent方法来执行ActiveX控件中的方法,例如“Click”事件。下面的脚本首先获取某个ActiveX控件的Object对象,然后使用FireEvent方法触发器Click事件,模拟用户单击控件:

Window(“Mini Browser”).Activate

Window(“Mini Browser”).WinObject(“http://www.variad.com/”).Type“//www.google.com”

获取某个ActiveX控件的Object对象

Set obj=Window(“Mini Browser”).ActiveX(“varOSButton.OSButton_2”).Object

使用FireEvent方法触发Click事件

AcxUtil.FireEvent obj, “Click”

各类ActiveX控件的测试:

1)        RadioButtonActiveX控件的测试:在实际测试过程中,经常会遇到,录制下来的控件操作脚本是位置敏感的,例如下面的脚本:

Window(“Combos”).Activate

Window(“Combos”).ActivateX(“ciaXPSelectionControls20T.XPOp”).Click 21,12

名为“ciaXPSelectionControls20T.XPOp”的控件是一个封装了RadioButton功能的ActiveX控件,在如图13.2所示的界面中,“XPBlue”、“XPSilver”、“XPOlive”都是这种类型的控件。

通过分析其Object属性,可知道其下的Value属性可用于设置单选按钮处于选择或未选择状态,因此,可以使用下面的脚本来达到选择单选按钮的目的:

Window(“Combos”).Activate

通过设置Value值为True达到选择单选按钮的目的

Window(“Combos”).ActiveX(“ciaXPSelectionControls20T.XPOp”).Object.Value=True

2)        CheckBoxActiveX控件的测试:在同一界面中,“AutoComplete”、“Right To Left”是CheckBox类的ActiveX控件,实现的功能与标准CheckBox类似。通过编写以下脚本,对控件进行试验:

Window(“Combos”).Activate

MsgBox Window(“Combos”).ActiveX(“ciaXPSelectionControls20T.XPCh”).Object.Value

发现当处于勾选状态时,“Value”返回值为“1,当处于未勾选状态时,“Value”值返回“-1”,因此,可以利用这种规律来设置控件的勾选状态,如以下代码所示:

Window(“Combos”).Activate

如果未勾选上,则设置为勾选状态

If Window(“Combos”).ActiveX(“ciaXPSelectionControls20T.XPCh”).Object.Value=-1 Then

    Window(“Combos”).ActiveX(“ciaXPSelectionControls20T.XPCh”).Object.Value=1

End If

3)        CalendarActiveX控件的测试:在如图13.3所示的界面中,对Calendar类的ActiveX控件进行测试。录制过程中,模拟用户选择某个日期,将得到如下脚本:

Window(“Calendar”).Activate

Window(“Calendar”).ActiveX(“ciaXPStyleCalendar20T.XPCalend”).Click 177,12

Window(“Calendar”).ActiveX(“ciaXPStyleCalendar20T.XPCalend”).Click 147,88

对于这样的脚本,不仅回放可能会失败,而且可读性非常差,因此需要进行“改造”,通过调试,在调试器中,查看控件的Object属性,如图13.4所示。

可以看到,“CalendarYear”代表年份,“CalendarMonth”代表月份,“CurrentDate”代表日期,因此,可以把脚本改写成如下所示:

Window(“Calendar”).Activate

设置年份

Window(“Calendar”).ActiveX(“ciaXPStyleCalendar20T.XPCalend”).Object.CalendarYear

=2004

设置月份

Window(“Calendar”).ActiveX(“ciaXpStyleCalendar20T.XPCalend”).Object.CalendarMonth

=3

设置日期

Window(“Calendar”).ActiveX(“ciaXPStyleCalendar20T.XPCalend”).Object.CurrentDate

=“2004-3-3”

4)        LabelActiveX控件的测试:Label类控件一般用于展示文字,而很多Label类的ActiveX控件则不仅仅能显示文字,而且能让文字的表现样式丰富多彩,如图13.5所示。对于这种类型的控件,测试过程中不仅仅要能取得控件的文字,还需要测试控件是否以适当的方法展示文字。

取得文字的方法有很多,例如,使用GetVisibleText方法:

使用GetVisibleText方法获取Label上的文字

Window(“Labels”).ActiveX(“ciaXPLabel20T.XPLabel20T_2”).GetVisibleText

或者使用GetROProperty方法:

使用GetROProperty方法获取Label上的文字

Window(“Labels”).ActiveX(“ciaXPLabel20T.XPLabel20T_4”).GetROProperty(“Text”)

还可以使用Object属性来获取:

通过访问Object中的Caption属性获取Label上的文字

Window(“Labels”).ActiveX(“ciaXPLabel20T.XPLabel20T_2”).Object.Caption

    通过Object属性,还可以获取到Label控件的其他属性,例如,文字显示的朝向:

Caption= Window(“Labels”).ActiveX(“ciaXPLabel20T.XPLabel20T_3”).Object.Caption

获取Label控件显示的文字方向

Orientation= Window(“Labels”).ActiveX(“ciaXPLabel20T.XPLabel20T_3”).Object.Orientation

If NOT Orientation=1 Then

   Reporter.ReportEvent micFail, “Label Orientation Error”,Caption & “控件的文字朝向:” & Orientation

End If

5)         ProgressBarActiveX控件的测试:对进度条的测试主要是取得进度条的状态,例如,完成状态。下面的脚本通过获取控件的Value值来判断进度是否处于完成状态:

Window(“Progress”).Activate

开始

Window(“Progress”).WinObject(“Start_3).Click

Do

获取完成百分比i

Complete=Window(“Progress”).ActiveX(“ciaXPProgressStep20T.ProgressS”).GetROProperty(“Value”)

Reporter.ReportEvent micDone, “完成百分比:”,Complete

If Complete=100 Then Exit Do

Loop

Msgbox “完成!

6)        SliderBarActiveX控件的测试:SliderBar类的控件用于提供给用户直观地设置一些数据,Sliderbar可以有横向和纵向两种显示方式,如图13.6所示。

可以使用如下脚本来获取SliderBar的显示方式:

Msgbox

Window(“Sliders”).ActiveX(“ciaXPSlider20T.ciaHSlider20T”).Object.TickMarkOrientation

Msgbox

Window(“Sliders”).ActiveX(“ciaXPSlider20T.ciaVSlider20T”).Object.TickMarkOrientation

    如何模拟用户拖动SliderBar到某个指定的位置呢?可以通过设置其Value值来达到这样的效果,例如,下面的代码模拟用户把滑竿拖动到中间位置:

Window(“Sliders”).Activate

拖动Slider到指定的某个值

Window(“Sliders”).ActiveX(“ciaXPSlider20T.ciaHSlider20T”).Object.Value=15

    如果获取到可拖动范围,则可以通过计算来设置拖动到指定的百分比位置,下面的脚本获取到SliderBar可拖动范围的最大值和最小值:

获取最小值

Msgbox Window(“Sliders”).ActiveX(“ciaXPSlider20T.ciaHSlider20T”).Object.ExtentMin

获取最大值

Msgbox Window(“Sliders”).ActiveX(“ciaXPSlider20T.ciaHSlider20T”).Object.ExtentMax

7)        LEDActiveX控件的测试:LED类的控件一般用于以LED的形式显示数值,如图13.7所示。

这类控件的测试关键是获取背后的值,下面的脚本通过访问Object属性中的Value来获取LED控件中的值:

获取LED中的值

Msgbox

Window(“XPLED20”).ActiveX(“ciaLedDisplay20T.LEDDisplay20T”).Object.Value

    另外,还可以进一步获取到数值的位数、小数的位数等信息:

获取总位数

Msgbox

Window(“XPLED20”).ActiveX(“ciaLEDDisplay20T.LEDDisplay20T”).Object.Digits

获取小数位数

Msgbox

Window(“XPLED20”).ActiveX(“ciaLEDDisplay20T.LEDDisplay20T”).Object.Decimals

8)        ListBoxActiveX控件的测试:ListBox是常用的列表控件,用于展示列表数据,ActiveX类型的ListBox控件通常会给ListBox加上更多的展示效果,如图13.8所示。

        但是,这样可能给自动化测试脚本的开发带来一些问题,例如,录制下来的脚本需  

进一步地改造,例如,下面是一段录制的脚本:

Window(“ListBox”).Activate

Window(“ListBox”).ActiveX(“ciaXPListControl20T.ciaXPList2”).WinObject(“ThunderRT6 

PictureBoxDC”).Click 101,150

    可看到,提示位置敏感的,而且根本不知道选择是哪行数据。因此,需要进行改造一下:

获取列表的所有行数

ListCount=Window(“ListBox”).ActiveX(“ciaXPListControl20T.ciaXPList2”).

Object.ListCount

For I=0 To ListCount-1

获取列表行的内容

Text=Window(“ListBox”).ActiveX(“ciaXPListControl20T.ciaXPList2”).Object.ItmeText(I)

Reporter.ReportEvent micDone, “ItemText”,Text

If Text=“MySelection” Then

 Window(“ListBox”).ActiveX(“ciaXPListControl20T.ciaXPList2”).Object.ItemSelected

(I)=true

  End If

Next

3.     使用QTP测试VB对象

对各类VB控件的测试:

1)        VbButton对象的测试:VbButton控件的最常用测试操作是Click方法,用于模拟用户单击按钮,例如下面的脚本。在单击按钮之前,可以先通过Object属性的Enabled的值来判断按钮是否处于激活状态,如以下脚本所示。除了Enabled属性外,还可以获取按钮的其他属性,例如字体。

2)        VbCheckBox对象的测试:VbCheckBox测试对象用于测试复选框控件,其常用的测试操作是Set方法,用于模拟用户设置复选框的状态,例如,下面的脚本用于模拟用户勾选名为“Check1的复选框。在Set方法中,输入参数为“ON”代表把复选框选择上,输入参数为“OFF”则代表把复选框设置为未勾选。如果想获取复选框的当前选择状态,可以使用Object属性来获取Value的值,如以下脚本所示,其中,如果返回的Value值为0,则代表未勾选上,为1则代表处于勾选状态。

3)        VbComboBox对象的测试:ComboBox控件其实是Edit控件与ListBox控件的整合,如图14.2所示。在QTP中,使用VbComboBox对象来访问和操作这类控件,其常用测试操作是Select方法,例如,下面的脚本使用Select方法选择名为“Item3的一项内容。Select方法还可以使用Index作为参数,Index0开始,例如,下面的脚本选择Combo1下拉框中的第十项内容。另外,还可以使用VbComboBox对象来获取下拉框控件的很多属性,例如下拉框项的个数。或者使用GetItem方法取得指定项的内容,如以下代码所示。使用GetSelection,则可以获取当前所选的项。选择某项内容后,一般会在Edit框中显示所选内容对应的文本,可以使用Object属性来访问这些文本。

4)        VbEdit对象的测试:VbEdit对象用于测试VBEdit控件,其常用测试操作是Set方法,用于模拟用户输入文本,例如,下面的脚本在名为“Text1的输入框中输入文本“TestEdit”。如果想获取文本框中输入的内容,则可使用GetROProperty方法获取“text”属性,如以下脚本所示。或者通过访问Object属性中的Text获取文本内容。

5)        VbEditor对象的测试:VBEdit控件属性中,把MultiLine设置为True,则需要使用VbEditor对其进行测试。模拟用户输入文本需要使用Type方法,而不是Set方法。如果希望获取用户输入的所有文本内容,可以访问Object属性的Text属性,如以下代码所示。

6)        VbFrame对象的测试:VbFrame对象用于测试Frame控件,Frame控件用于包含和组织其他控件。一般不作为测试对象进行测试,除非是获取其显示的文本作为测试逻辑控制的依据。例如,下面的代码通过GetROProperty方法获取text属性。也可以使用Object属性中的Caption来获取文本属性,如下面的代码所示。

7)        VbLabel对象的测试:Label控件用于显示简单的文本内容,在QTP中,使用VbLabel对象来对其进行测试,一般使用GetROProperty方法来获取label的文本内容,如以下脚本所示。也可以通过Object访问Caption属性来获取Label的文本内容,如以下脚本所示。

8)        VbList对象的测试:VbList对象用于测试列表控件,其常用的测试操作为Select方法,例如,下面的脚本用于选择名为“Item3的一项内容。也可以使用Index作为Select方法的参数,Index0开始计算,例如,下面的脚本中,输入参数为9,表示选择第10项的内容。另外,也可以模拟用户进行多选操作,例如,下面的脚本模拟用户选择“Item1和“Item3两项的内容。还可以通过SelectRange方法来模拟用户选择某个范围的数据项,例如,下面的脚本模拟用户选择第6项到第10项的数据。如果想模拟用户把某项已处于选中状态的项作取消选择操作,则可以使用Deselect方法,例如,下面的脚本把“Item7设置为未选中状态。如果想知道List控件中总共有多少项的内容,可以使用GetItemsCount方法,如以下脚本所示。如果想知道当前选中的所有项的内容,可以使用GetSelection方法。

9)        VbRadioButton对象的测试:VbRadioButton对象用于测试单选框控件,其常用的测试操作时Set方法,用于模拟用户选中某个单选框,例如,下面的脚本依次选择3个单选框。如果想知道某个单选框是否处于选中状态,则可以使用Object属性的value属性,例如下面的脚本通过访问Object属性的value来判断单选框当前是否处于选中状态。

10)     VbScrollBar对象的测试:VbScrollBar对象用于测试滚动条控件,其常用测试操作是Set方法,用于模拟用户拖动条到某个位置,如下面的脚本所示。也可以模拟用户单击向下或向右的按钮把滚动条往下,或往右拖动一行,如以下脚本所示。往上或往左拖动1行则应该使用PrevLine方法。如果想把滚动条往下,或往右拖动一页的距离,则应该适用NextPage方法,如以下代码所示。相应地,往上,或往左拖动一页,则使用PrevPage方法。

11)     VbWindow对象的测试:VbWindow对象用于测试VB应用程序的窗口,其常用的测试操作是获取其Exist属性,从而判断窗口是否存在,例如,下面的代码首先判断窗口是否存在。如果存在,则激活窗口,并且最大化窗口。最小化窗口对象使用Maximize方法,恢复窗口大小则使用Restore方法。如果想关闭窗口对象,则可使用Close方法,如以下脚本所示。另外,可以通过Object属性来访问窗口的标题文本,如下面的脚本所示。当然,也可以使用GetROProperty方法获取窗口标题。

4.     使用QTP测试标准Web对象

使用Object属性访问DOM对象:

QTP支持直接访问DOMDocument Object Model),可以通过DOM来访问HTML标签。在QTP中,访问DOM是通过使用Page测试对象的Object属性来进一步访问的,例如,下面的脚本获取达到Google主页中的各项HTML元素:

On Error Resume Next

Set Doc=Browser(“Google”).Page(“Google”).Object

循环获取Page中的所有对象

For Each Element In Doc.all

      TagName=Element.TagName ‘获取标签名

      InnerText=Element.innerText ‘获取inner text

      ‘把信息写入测试结果

      Reporter.ReportEvent 0,TagName,InnerText

Next

另外,通过Object属性,还可以访问很多Web控件对象的内部属性,例如,下面的脚本启动浏览器并导航到Google网站,然后,通过访问WebEdit控件的Object属性,判断输入框是否处于可用状态,如果是,则通过访问WebEdit控件的Object属性中的focus方法来把焦点移到输入框,然后,输入文字:

启动浏览器并导航到Google网站

SystemUtil.Run“iexplore”, “www.google.cn”

如果输入框处于可用状态,则把焦点移到输入框并输入文字

If Not Browser(“Google”).Page(“Google”).WebEdit(“q”).Object.isDisabled then

Browser(“Google”).Page(“Google”).WebEdit(“q”).Object.focus

Browser(“Google”).Page(“Google”).WebEdit(“q”).Set“QTP”

End If

使用Browser对象控制浏览器的导航:

Browser对象还封装了对浏览器的导航动作的控制,例如,导航到指定的URL地址,导航到上一页、下一页、主页等,如下面的脚本所示:

启动IE浏览器,并导航到Google网站

SystemUtil.Run “iexplore.exe”, “http://www.google.cn”

让浏览器窗口最大化

Browser(“Google”).FullScreen

执行搜索功能

Browser(“Google”).Page(“Google”).WebEdit(“q”).Set“QTP”

Browser(“Google”).Page(“Google”).WebButton(“Google 搜索”).Click

等待页面导航动作完成

Browser(“Google”).Page(“QTP-Google 搜索”).Sync

导航返回上一页

Browser(“Google”).Back

导航返回主页

Browser(“Google”).Home

刷新页面

Browser(“Google”).Refresh

关闭浏览器

Browser(“Google”).Close

对各类Web对象的测试:

1)        Page对象的测试:Page对象是页面的主体对象,用于包含各种Web控件,通过Page对象,可以访问下一层的对象,例如页面中的链接、图片等。

2)        Frame对象的测试Frame对象用于测试网页中使用的页面框架,Frame页与page页相似,都是一种包含控件的对象,例如,下面的脚本中名为“index”的Frame也包含了链接对象、文本选择框对象等控件。

3)        Image对象的测试:Image对象用于测试页面中的图片对象,可通过Object属性访问其中的图片来源地址、图片大小等属性,例如,下面的脚本通过Object属性获取图片的来源地址,并判断图片来源地址是否正确,如果不正确,则报告错误。还可以通过Object属性获取到图片的widthheight属性,取得图片的大小信息,如下面的脚本所示。

4)        Link对象的测试:对于网页链接的测试,可以使用Link对象,例如,下面的脚本用于对链接的地址进行检查。其中使用了CheckProperty方法,用于对比Link对象的URL属性是否等于指定的地址。也可以使用Link对象的Object属性中的href属性来进行比较,如下面的代码所示。对于链接对象,最常用的测试操作莫过于单击链接了,可以直接使用Link对象的Click方法,如以下脚本所示。也可以使用FireEvent方法,如下面脚本所示。

5)        WebButton对象的测试:WebButton对象用于测试Web页面中的按钮控件,例如,在测试126邮箱的登录功能时就需要使用WebButton对象的Click方法来模拟用户单击“登录”按钮,如以下脚本所示。

6)        WebCheckBox对象的测试:WebCheckBox用于对页面中的复选框控件进行测试,例如,QTP自带的Sample应用程序“Mercury Tours Web Site”中,在订票操作中,需要输入账号地址和送票地址。其中的“Ticketless”和“Same as Billing Address”都是复选框控件,都可以使用WebCheckBox对象来进行测试,例如,下面的脚本把“Same as Billing Address”勾选上。

7)        WebEdit对象的测试:WebEdit对象用于测试输入框控件,可使用其中的Set方法来模拟用户输入文字,例如,下面的脚本用于模拟用户填写订票系统中的各种信息。如果想获取输入框中的内容,则可以使用WebEdit对象的Object属性来访问其中的Value属性,如以下脚本所示。

8)        WebFile对象的测试:WebFile对象用于测试网页中的文件选择控件,例如,在测试如图15.11所示的126邮箱中的文件附件添加功能时,就需要使用到WebFile对象。下面的脚本用于模拟用户登录126邮箱,然后新建一个邮件,选择附件的过程。其中,WebFile对象的Set方法用于指定选定的本地文件。

9)        WebList对象的测试:WebList对象对于测试Web页面中的下拉选择框控件,常用的测试操作是Select法国法,例如,下面的测试脚本用于从选择框中选择订票数量和起飞地点。如果想获取选择框中所选的内容,则可以使用Object属性访问其中的Value属性,如下面的代码所示。或者可以使用GetROProperty方法,输入参数selection,如以下脚本所示。

10)     WebRadioGroup对象的测试:WebRadioGroup对象用于测试单选框对象,例如,图15.12中的“Type”就是一个WebRadioGroup控件对象,包含了两个单选框“Round Way”和“One Way”。WebRadioGroup对象的常用测试操作时Select方法,例如,下面的脚本选择“One Way”所指的单选框。通过访问Object属性,可以取得WebRadioGroup对象的很多内部属性,例如,访问“all items”来获取所有单选框对象,访问“items count”取得单选框的个数,访问“selected item index”来取得当前所选的对象index,而“Value”则代表了当前所选对象的内容。如下面脚本所示。

11)     WebTable对象的测试:WebTable对象用于测试Web页面中的表格对象,例如,图15.13中的“DEPART”就是一个表格对象。对表格对象的测试主要是获取其中的数据,例如表格的行数、列数、单元格的内容等,获取表格的行数、列数可以通过访问其中RowCountColumnCount属性,获取单元格的内容,则可使用GetCellData方法,输入行号和列号作为参数,如以下脚本所示。WebTable对象中的ChildItem方法用于获取单元格中的测试对象,例如,下面的脚本首先获取WebTable对象,然后,通过ChildItem获取指定单元格中的链接对象,并单击该链接。

12)     WebXML对象的测试:网页中往往会包含很多XML数据,QTP提供了WebXML对象用于测试这些网页中的XML文档对象,例如,下面的脚本用于获取XML数据,并存储到某个文件中。另外,也可以直接使用Object属性对象来获取XML文档中的文本内容,例如,下面的脚本通过访问其中的innerText对象来取得XML文档的内容,并显示出来。

13)     WebElement对象的测试:WebElement对象用于测试Web页面中的所有基本对象,可以代表所有Web对象,例如页面中的文本、图像、链接、输入框、按钮、选择框、表格等。因此,WebElement对象也拥有与其他测试对象相同的基本属性和方法,例如Object属性、Exist属性、CheckPropertyClickFireEventGetROProperty等方法。


0 0
原创粉丝点击