我只是想知道是否可以通过Quick Test Pro在应用程序中唯一地标识给定对象。
例如,如果网页上有10个Ok按钮,没有HTML或Javascript为它们提供唯一标识符,我该如何选择第3个按钮?
感谢您的帮助。
答案 0 :(得分:2)
您必须在QTP中使用index属性。
答案 1 :(得分:1)
如果要点击第3个按钮,则需要使用QTP的settoproperty功能。
'在Object存储库中,您必须将index属性添加为可选标识符,并将其设置为0表示第一个按钮。 您可以使用
Browser("").Page("").Frame("").WebButton("OK").Settoproperty "index", 2
Browser("").Page("").Frame("").WebButton("OK").Click
'点击第3个按钮。
答案 2 :(得分:1)
首先,您可以修改下面的代码以打印出所有文本或名称等.... 这将显示屏幕上匹配的所有项目,即使GUI Spy不会显示它们。
这可以通过向您显示间谍无法接收的唯一名称来解决您的问题,然后您可以使用它来与对象进行交互,但是,如果这不起作用,它将允许您计算用于查找所需数字的名称
例如
如果它显示....
修改
修改
修改
你想要屏幕上的第3个编辑按钮,你现在知道它是我们刚看过的这个孩子系列中的第3个项目,所以,通过这种方式得到你独特的属性,或者得到你孩子的号码希望通过计算名称或文本等...(只需使用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.
在我看来,这是最后的努力 它可能会更容易打破,好像更多这些被添加或删除,数字将不再匹配,但...... 如果你已经离开了,那就去吧。
作为一个简单的答案,这有点复杂,请随时给我发电子邮件以获取更多信息,因为在采用这种方法之前还有很多其他的事情可以使用。
使用像上面用户这样的索引的问题是它不能在所有对象类型上工作,因为可能并不总是有给定对象类型的索引。