Quick Test Pro中的模糊对象

时间:2010-07-20 19:47:47

标签: vbscript qtp

我只是想知道是否可以通过Quick Test Pro在应用程序中唯一地标识给定对象。

例如,如果网页上有10个Ok按钮,没有HTML或Javascript为它们提供唯一标识符,我该如何选择第3个按钮?

感谢您的帮助。

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.

在我看来,这是最后的努力 它可能会更容易打破,好像更多这些被添加或删除,数字将不再匹配,但...... 如果你已经离开了,那就去吧。

作为一个简单的答案,这有点复杂,请随时给我发电子邮件以获取更多信息,因为在采用这种方法之前还有很多其他的事情可以使用。

使用像上面用户这样的索引的问题是它不能在所有对象类型上工作,因为可能并不总是有给定对象类型的索引。