无法使用描述性编程识别对象,但能够使用描述对象来识别对象

时间:2014-12-01 14:28:04

标签: angularjs qtp hp-uft

在我的应用程序上,我必须搜索返回一行或多行数据的字母数字id。在每个行上都存在链接,我必须单击第一个链接。

不幸的是,它没有任何独特的属性,因此我无法将其添加到OR中。相反,我使用了类似下面的描述性编程

'returns false
page.Link("class:=ng-binding","innertext:=AplhaID","html tag:=A").Exist

QTP无法使用上述代码识别对象。所以我尝试使用描述对象,而不是这个,如下面的代码

Set oDesc = Description.Object
oDesc("class").Value = "ng-binding"
oDesc("html tag").Value = "A"
oDesc("innertext").Value = "AplhaID"

Set lnk = page.ChildObjects(oDesc)

'gives me 2 which is correct. There are two links
msgbox lnk.Count

'highlights the correct link
lnk(0).Highlight

我不知道是什么原因导致这种行为。我认为可能是因为多个链接与描述匹配,但我执行此搜索多个ID并且尽管返回了多行,描述性编程代码能够识别正确的行并继续。

我查看了QTP descriptive programming issue,但我的链接属性值没有特殊字符。

1 个答案:

答案 0 :(得分:1)

要使用描述性字符串方法,请确保只有一个对象与给定属性匹配。

如果有超过1个具有给定属性的对象,则下面的语句可能会失败。

page.Link("class:=ng-binding","innertext:=AplhaID","html tag:=A").Exist

因此,您需要使语句唯一地查找对象。试试这个。它会工作!

page.Link("class:=ng-binding","innertext:=AplhaID","html tag:=A", "index:=0").Exist