在我的应用程序上,我必须搜索返回一行或多行数据的字母数字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,但我的链接属性值没有特殊字符。
答案 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