问题现象:
1) 页面上有一个下拉列表WebList,会根据一个比较随机的条件变为可用或不可用,可用的时候需要选择下拉的选项,郁闷的是可用和不可用的时候控件的name不一样。如果用exist去判断,虽然可以,但是总会出warning。
2) 页面上有2个按钮WebButton,一个确定一个返回,他们的name、text等很多属性值都是一样的(我想XX了那个开发),不同的地方是一大串字符,他把点击按钮调用的函数,style等等很多东西都写在里面,如果用描述式去判断我觉得很麻烦。我后来用了坐标,结果窗口位置一变就识别不到了。
解决办法:
上面两种问题其实都需要另外一种识别控件的方法,常用的几种都无法行得通。于是在查看帮助的时候发现了这个ChildObjects,返回对象中包含的子对象的集合。忽然觉得这个很有用,正好有示例,如下:
Sub ChildObjects_Example()
'The following example uses the ChildObjects method to find all the
'list objects on a Web page, and then to select an item in each list.
Set Desc = Description.Create()
oDesc("micclass").Value = "WebList"
Set Lists = Browser("Mercury Interactive").Page("Mercury Interactive").ChildObjects(oDesc)
NumberOfLists = Lists.Count()
For i = 0 To NumberOfLists - 1
Lists(i).Select i + 1
Next
End Sub
突然我就想发现了新大陆一样,只要返回了一个同类型的对象集合,然后用这个集合来定位到我要的控件。这里只要判断他是集合里的第几个就行了,而我遇到的问题的控件位置都是固定的。于是使用这个方法顺利解决了。
可以说,这是另一种识别对象的方法,对于难以识别的对象来说,这个方法实在太方便了。具体解决办法,只要根据帮助的内容稍加修改就可以了,这里简单写一下。
Set Desc = Description.Create()
oDesc("micclass").Value = "WebButton"
Set Lists = Browser("浏览器名字").Page("页面名字").ChildObjects(oDesc)
Lists(0).Click '我要的控件是第一个
'另一个WebList的就是判断那个控件的name是什么,然后就知道现在这个下拉列表是可用还是不可用,就可以继续操作了。
--------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------
原文来自:http://www.ltesting.net/ceshi/ceshijishu/rjcsgj/mercury/quicktestpro/2012/0724/205301.html