繁体   English   中英

UFT 中 SwfTable 列标题的右键单击操作

[英]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 方法,只需绘制它并使用它。

GetCellProperty 的文档

差点忘了:当你有坐标时:

SwfTable.Click x, y

这些是相对坐标,因此您无需将它们添加到 abs_x 和 abs_y。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM