[英]Right click operation on SwfTable column header in UFT
我正在通過 UFT 自動化應用程序,在此過程中,我需要從 SwfTable 的記錄列表中搜索特定文本。
該表具有列標題,右鍵單擊列標題可以讓我輸入過濾器文本。
我的桌子看起來像這樣
右鍵單擊列標題將讓我輸入過濾器文本
為表捕獲的代碼片段是
SwfWindow("XXX").SwfWindow("Dashboard").SwfTable("completedGrid").
我在很多論壇上搜索過,但沒有找到解決方案,有人可以在這里幫助我。
我在自動化 Web 應用程序時遇到了類似的問題。 這就是我所做的:
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 是桌面應用程序,只需將菜單更改為要右鍵單擊的元素。 希望能幫助到你!
通用且不可知的解決方案是: GetTextLocation
。 您在表格上調用該方法(也可能定義搜索矩形),該方法將告訴您找到文本的矩形坐標。 這主要基於文本識別,因此它會非常不穩定:忘記它,很少起作用:)
更好的解決方案是:
x = CINt(SwfTable("Table").GetCellProperty 0, "COLNAME", "x")
y = CINt(SwfTable("Table").GetCellProperty 0, "COLNAME", "y")
這些是列中第一行單元格的坐標。 現在我們只需要移動到此列的標題的中心。 那只是另一種計算
' Move Right
x = x + 20
' Move Up
y = y - 20
這可能有效,但它仍然非常粗糙並且很容易變得不穩定。 使用相同的方法,您可以獲得單元格的高度和寬度屬性並使用它來計算標題的中心:
x = x + (width / 2)
y = y - (height / 2)
好多了,但意味着您的標題單元格與您的表格單元格具有相同的大小。
如果不是這種情況,您必須使用對象方法並通過一些逆向工程獲取對表列的引用並進行一些計算。
總結:它是關於在矩形和基本幾何圖形之間導航。 你可以變得更漂亮,甚至可能不需要使用 Object 方法,只需繪制它並使用它。
差點忘了:當你有坐標時:
SwfTable.Click x, y
這些是相對坐標,因此您無需將它們添加到 abs_x 和 abs_y。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.