Во-первых, вы можете изменить мой код ниже, чтобы распечатать весь текст или имена и т. Д ....
Это покажет все элементы, которые соответствуют на экране, даже если шпион 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.
На мой взгляд, это последнее усилие
Это может сломаться легче, как будто больше из них добавлено или удалено, число больше не будет совпадать, но ...
Если это все, что вы оставили, пойти на это.
Это довольно сложно объяснить как простой ответ, пожалуйста, не стесняйтесь написать мне по электронной почте для получения дополнительной информации, так как есть много, много других вещей, которые вы можете попробовать, прежде чем прибегнуть к этому, которые могут работать хорошо.
Проблема с использованием индекса, подобного указанному выше, заключается в том, что он не будет работать на всех типах объектов, поскольку не всегда может быть индекс для данного типа объекта.