Операция правой кнопкой мыши на заголовке столбца SwfTable в UFT - PullRequest
1 голос
/ 11 марта 2020

Я работаю над автоматизацией приложения через UFT, в этом процессе мне нужно найти определенный c текст из списка записей в SwfTable.

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

Моя таблица выглядит следующим образом

table screenshot

Щелчок правой кнопкой мыши по заголовку столбца позволит мне войти в фильтр текст

filter screenshot

Фрагмент кода для таблицы:

SwfWindow("XXX").SwfWindow("Dashboard").SwfTable("completedGrid").

Я искал на многих форумах, но не нашел решения, может кто-нибудь помочь мне здесь .

Ответы [ 2 ]

0 голосов
/ 14 апреля 2020

Универсальный и Агности c Решение будет: GetTextLocation. Вы вызываете метод в таблице (возможно, также определяете прямоугольник поиска), и метод сообщит вам координаты прямоугольника, в котором находится текст. В основном это основано на распознавании текста, поэтому оно будет очень нестабильным: Просто забудьте об этом, редко работает :)

Лучшее решение будет:

x = CINt(SwfTable("Table").GetCellProperty 0, "COLNAME", "x")  
y = CINt(SwfTable("Table").GetCellProperty 0, "COLNAME", "y")

Эти являются coodrinates ячейки в первой строке в вашей колонке. Теперь нам просто нужно переместиться в центр заголовка этой колонки. Это просто другой расчет

' Move Right
x = x + 20
' Move Up  
y = y - 20

Это может сработать, но оно все еще очень грубое и может стать легко нестабильным. С помощью того же метода вы можете получить свойство высоты и ширины ячейки и использовать его для вычисления центра заголовка:

x = x + (width / 2)
y = y - (height / 2)

Намного лучше, но подразумевает, что ваша ячейка заголовка имеет одинаковый размер как ваши ячейки таблицы.

Если это не так, вы должны использовать методы объекта и с помощью некоторого обратного инжиниринга получить ссылку на столбцы таблицы и выполнить некоторые вычисления.

В заключение : речь идет о навигации между прямоугольниками и базовой c геометрией. Вы можете стать намного более изощренным, и вам даже не нужно использовать методы объекта, просто нарисуйте его и поиграйте с ним.

Документация для GetCellProperty

Почти забыли: когда вы просто укажите координаты:

SwfTable.Click x, y

Это относительные координаты, поэтому вам не нужно добавлять их в abs_x и abs_y.

0 голосов
/ 16 марта 2020

У меня была похожая проблема, когда я автоматизировал веб-приложение. Это было то, что я сделал:

Set menu=Browser("").Page("").WebElement("")
idx=2
'This var. points the which option to select in the right click menu. This var. is 
'always the option+1 value. Ex. If u want to select the second option then the var. 
'should have the value 3
Set obj = CreateObject("Mercury.DeviceReplay")
Set WshShell = CreateObject("WScript.Shell")
'Get the absolute coordinates of the ibject
absx = menu.QueryValue("abs_x")
absy = menu.QueryValue("abs_y")

obj.MouseClick absx, absy, 2
'Optional wait statement
wait 1

For i = 1 To idx-1
   WshShell.sendkeys "{DOWN}"
Next
WshShell.sendkeys "{ENTER}"
Set WshSEll = nothing
Set obj = nothing

Если ваш AUT является настольным приложением, просто измените ваше меню на элемент, где вы хотите щелкнуть правой кнопкой мыши. Надеюсь, это поможет!

...