1

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

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

谢谢你的帮助。

4

3 回答 3

2

您将不得不在 QTP 中使用 index 属性。

于 2010-07-20T19:56:27.863 回答
1

如果要单击第三个按钮,则需要使用 QTP 的 settoproperty 功能。

'在对象存储库中,您必须将索引属性添加为可选标识符,并将第一个按钮设置为 '0。你可以使用

Browser("").Page("").Frame("").WebButton("OK").Settoproperty "index", 2
Browser("").Page("").Frame("").WebButton("OK").Click

'它点击第三个按钮。

于 2010-08-01T18:35:41.307 回答
1

首先,您可以修改下面的代码以打印出所有文本或名称等。这将显示屏幕上所有匹配的项目,即使 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.

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

作为一个简单的答案,这有点复杂,请随时给我发电子邮件以获取更多信息,因为在诉诸此方法之前,您可以尝试许多其他可能效果很好的方法。

使用上面用户指出的索引的问题是它不适用于所有对象类型,因为给定对象类型可能并不总是有索引。

于 2013-05-10T07:30:45.457 回答