QTP-Web ViewList,ComboBox识别

来源:互联网 发布:2010人口普查全国数据 编辑:程序博客网 时间:2024/06/06 05:01

 

                对于WinList, WebListQTP会提供对应的Select方法,来选择item.但是对于ViewList, ComboBox等,QTP就没有可供选择的方法了,这种情况下,我们就可以借助于DOM来实现同样的Select效果。

                最近测试的项目的例子:

     

 

A行的文本框,既可以编辑,同时可以从下拉列表中选择对应的ItemQTP识别和Html结构如下图:

             

Html节点标签为ComboBox,子节点标签为OptionViewList类型。

通过手动尝试发现,A行文本框可以输入任何值,但是Submit后,系统只识别下拉列表选中的选项,而不识别文本框手动输入的值。即使你输入了A,但是下拉列表选择B的话,最后被成功Submit的也是B

因此,如果要通过给该文本框正确赋值,只能从下拉列表中选择,而不能手动赋值。所以QTP利用WebEdit Set的方法是行不通的。同时由于类型是ViewListQTP也未提供该类型的选择方法,因此这里采用DOM方法。

Set objCombo=Browser("XX").Page("XX").ViewLink("ComboBox").Object                                          首先要将ViewList设置为对象,才可以使用DOM方法

numOptions=objCombo.options.length                                                                                                获得ComboxBoxOption的个数,利用DOM Options集合

objCombo.options.item(0).text                                                                                                              获得ComboxBox下第一个OptionText

关于Options集合的定义和用法

 

在以上的例子中,我们也可以使用objCombo.options(0).Value来获得第一个OptionValue值,但是由于以上的Options实例,不提供Option().text方法,因此只能使用item来获得。

通过查看属性值,可以发现,Value值是一个系统生成的不规则多位数,而Text的值则是下拉列表中可以选择的值。

 

因此,我们必须要通过Item来获得text值。

进一步发现A行文本框的值,初始Value为空。当选择Option选项后,A行文本框的值就会变成对应option项的Value值,因此我们可以通过对objCombo.Value赋值,来实现A行文本框的正确赋值。

比如,我们需要选择最后一个option的值。脚本可以写成:

Set objCombo=Browser("XX").Page("XX").ViewLink("ComboBox").Object

numOptions= objCombo.options.length

objCombo.value=objCombo.options.item(numOptions-1).value

当然我们也可以选择任何一个我想设定的值,比如我想选择中间的任意一项:”XXXXX”

那么我们只需要获得该项所在的index值,然后再赋值即可,脚本如下:

Set objCombo=Browser("XX").Page("XX").ViewLink("ComboBox").Object

numOptions= objCombo.options.length

For i=0 to numOptions-1

                If objCombo.options.item(i).text="XXXXX" Then

                                Exit For

                End If

Next

objCombo.value=objCombo.options.item(i).value

ok,方法很简单,只要自己熟悉对应的DOM,理清Html结构以及对应的赋值方式,任何问题都很容易解决,当然更要注意方法的积累。

原创粉丝点击