我只是想知道是否可以通过 Quick Test Pro 在应用程序中唯一标识给定对象。
例如,如果网页上有 10 个 Ok 按钮,但没有 HTML 或 Javascript 为它们提供唯一标识符,我将如何选择第三个按钮?
谢谢你的帮助。
您将不得不在 QTP 中使用 index 属性。
如果要单击第三个按钮,则需要使用 QTP 的 settoproperty 功能。
'在对象存储库中,您必须将索引属性添加为可选标识符,并将第一个按钮设置为 '0。你可以使用
Browser("").Page("").Frame("").WebButton("OK").Settoproperty "index", 2
Browser("").Page("").Frame("").WebButton("OK").Click
'它点击第三个按钮。
首先,您可以修改下面的代码以打印出所有文本或名称等。这将显示屏幕上所有匹配的项目,即使 GUI Spy 不会显示它们。
这可能会通过向您显示间谍无法获取的唯一名称来解决您的问题,然后您可以使用它与对象进行交互,但是,如果这不起作用,它将允许您计算名称找到你想要的号码
例如
如果它显示....
编辑
编辑
编辑
你想要屏幕上的第三个编辑按钮,你现在知道它是我们刚刚浏览的这个孩子集合中的第三个项目,所以,用这种方式获取你的独特属性,或者通过计数来获得你想要的孩子的数量名称或文本等...(只需使用 GetROProperty 即可帮助您计算对象以找到您想要的对象)
这是该代码,请注意其余解决方案的代码...
'#####################################################################################
'# getObjects()
'# Desc: Change the oPageObject and run this function to return all the text from all
'# visible objects on the screen. This is helpful for getting info on objects
'# that the GUI Spy wont get values for.
'#####################################################################################
Function getObjects()
print "# getObjects"
Set oPageObject = Browser("yourValueHere").Page("yourValueHere").SlvWindow("YourValue")
Set oDesc = Description.Create()
oDesc("slvtypename").Value = "button" ' Set this to the describing feature
Set oChild = oPageObject.ChildObjects(oDesc)
' Counting number of child objects
MyObjCount = oChild.Count
Print MyObjCount
' Looping through child objects, select value in list when criteria is met
For TotalCount = 0 To MyObjCount-1
vName = oChild(TotalCount).GetRoProperty("name")
print vName' output name of objects
Next
End Function
一旦你知道了数字,然后像这样更改代码......在这种情况下,我们计算了名称并发现我们想要第二次出现,现在将编写代码来单击它。
Set oPageObject = Browser("yourValueHere").Page("yourValueHere").SlvWindow("YourValue")
Set oDesc = Description.Create()
oDesc("slvtypename").Value = "button" ' Set this to the describing feature
oChild(2).Click ' see, here we say, click the 2nd child.
在我看来,这是最后的努力它可能会更容易打破,就像添加或删除更多这些,数字将不再匹配,但是......如果你只剩下它,那就去吧。
作为一个简单的答案,这有点复杂,请随时给我发电子邮件以获取更多信息,因为在诉诸此方法之前,您可以尝试许多其他可能效果很好的方法。
使用上面用户指出的索引的问题是它不适用于所有对象类型,因为给定对象类型可能并不总是有索引。