Неоднозначные объекты в Quick Test Pro - PullRequest
1 голос
/ 20 июля 2010

Мне просто интересно, можно ли однозначно идентифицировать данный объект в приложении через Quick Test Pro.

Например, если на веб-странице есть 10 кнопок Ok, без HTML или Javascript, дающих им уникальные идентификаторы, как бы я выбрал третью кнопку?

Спасибо за вашу помощь.

Ответы [ 3 ]

2 голосов
/ 20 июля 2010

Вам нужно будет использовать свойство index в QTP.

1 голос
/ 10 мая 2013

Во-первых, вы можете изменить мой код ниже, чтобы распечатать весь текст или имена и т. Д .... Это покажет все элементы, которые соответствуют на экране, даже если шпион GUI не покажет их.

Это может решить вашу проблему, показывая вам уникальное имя, которое шпион не может подобрать, тогда вы можете просто использовать его для взаимодействия с объектом, но, если это не сработает, это позволит вам считать имена, чтобы найти номер того, что вы хотите

например

если показывалось ....

Редактировать

Редактировать

Редактировать

И вы хотели, чтобы на экране была 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

Как только вы узнаете номер, измените код следующим образом ... В этом случае мы посчитали имена и выяснили, что хотим 2-е вхождение, и теперь напишем код, чтобы щелкнуть по нему.

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.

На мой взгляд, это последнее усилие Это может сломаться легче, как будто больше из них добавлено или удалено, число больше не будет совпадать, но ... Если это все, что вы оставили, пойти на это.

Это довольно сложно объяснить как простой ответ, пожалуйста, не стесняйтесь написать мне по электронной почте для получения дополнительной информации, так как есть много, много других вещей, которые вы можете попробовать, прежде чем прибегнуть к этому, которые могут работать хорошо.

Проблема с использованием индекса, подобного указанному выше, заключается в том, что он не будет работать на всех типах объектов, поскольку не всегда может быть индекс для данного типа объекта.

1 голос
/ 01 августа 2010

Если вы хотите нажать на 3-ю кнопку, вам нужно использовать функцию settoproperty QTP.

'В хранилище объектов вы должны добавить свойство индекса в качестве необязательных идентификаторов и установить его равным' 0 для первогокнопка.Вы можете использовать

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

'Он нажимает на 3-ю кнопку.

...