使用 TreeViewItem 的 Native Class 扩展 UIObject
Expanding a UIObject with Native Class of TreeViewItem
原题
我有一个可展开的文件夹 UIObject,我需要将其展开以显示所有子文件夹。不能双击它,因为这不会展开文件夹。我从这个文档 https://admhelp.microfocus.com/leanft/en/14.02/NetSDKReference/HP.LFT.SDK~HP.LFT.SDK.Java.ITreeView.html 以及其他一些文档中看到,有 ITreeView 和 ITreeViewNode 的概念。
如何展开这个元素?我真的只需要一些代码示例,说明我们如何获取一个对象,将其定义为 ITreeView 和 ITreeView 节点并展开它。
结果
即使这不是最佳解决方案,也可以使用下面建议的解决方法来实现,这就是实现它的方法
public void ExpandFolder(int index)
{
IUiObject folder = ViewPage.FolderExplorer.Describe<IUiObject>(new UiObjectDescription
{
ObjectName = "TreeViewItem",
Index = (uint)index
});
var expandButton = folder.AbsoluteLocation;
expandButton.X = expandButton.X + 2;
expandButton.Y = expandButton.Y + 4;
Mouse.Click(expandButton);
GeneralUtilities.Sleep(1);
}
在这种情况下,元素左侧有一个小的下拉箭头。我无法识别,所以我识别了文件夹并操纵了点击。如果有人偶然发现这一点并且知道使用 LeanFT 执行此操作的更直接方法,我非常希望看到一个示例。如果没有,您正在这里寻求帮助 - 我希望这对您有所帮助!
理论
为了Expand
和Collapse
一个JavaITreeView
,这些是步骤:
描述 ITreeView
:
ITreeView treeView = Desktop.Describe<IWindow>(new WindowDescription())
.Describe<ITreeView>(new TreeViewDescription()
{
AttachedText = "Etc"
});
获取其中一个节点:
ITreeViewNode treeViewNode = treeView.GetNode("someNode");
展开或折叠它:
treeViewNode.Expand(); treeViewNode.Collapse();
唯一可扩展的对象是 ITreeViewNode
(即,这是具有 .Expand
方法的对象),到达节点的唯一方法是通过 ITreeView
,如上图
实践中...
你想把一个UIObject
(我怀疑这是物体识别中心识别的,对吧?)作为一个ITreeView
,这样就可以在上面调用Expand
和Collapse
了?
这是不可能的。
- 在这些 SDK 中,每个描述都是一个通用元素。在 Java 中是
UIObject
,在 Web 中是 WebElement
,等等。
- 那些更独特的,比如树状视图,扩展通用的(
UIObject
)并在过程中增加一个识别属性
- 在
ITreeView
的情况下,很可能是UIObject
和 NativeClass
设置为"javax.swing.JTree"
如果对象识别中心没有将可扩展对象识别为 ITreeView
,那是因为它不是。
解决方法
如果您的目标只是展开,并且手动双击有效,那么您可以:
- 识别
UIObject
;
计算您手动双击的点相对于UIObject
左上像素的坐标。 (例如,向下 5 个像素,向右 5 个像素)
您可以对其进行近似、试错或使用可以提供帮助的工具。
使用 HP.LFT.SDK.Mouse
class 双击该确切位置:
var loc = theUiButton.AbsoluteLocation;
var p = new System.Drawing.Point(loc.X + 5, loc.Y + 5);
Mouse.DoubleClick(p, MouseButton.Left);
它现在不起作用的原因是因为 .DoubleClick
默认情况下在 UIObject
的中心执行双击,我有预感这不是可扩展的地方object 是 - 所以你需要提供微调参数。
原题
我有一个可展开的文件夹 UIObject,我需要将其展开以显示所有子文件夹。不能双击它,因为这不会展开文件夹。我从这个文档 https://admhelp.microfocus.com/leanft/en/14.02/NetSDKReference/HP.LFT.SDK~HP.LFT.SDK.Java.ITreeView.html 以及其他一些文档中看到,有 ITreeView 和 ITreeViewNode 的概念。
如何展开这个元素?我真的只需要一些代码示例,说明我们如何获取一个对象,将其定义为 ITreeView 和 ITreeView 节点并展开它。
结果
即使这不是最佳解决方案,也可以使用下面建议的解决方法来实现,这就是实现它的方法
public void ExpandFolder(int index)
{
IUiObject folder = ViewPage.FolderExplorer.Describe<IUiObject>(new UiObjectDescription
{
ObjectName = "TreeViewItem",
Index = (uint)index
});
var expandButton = folder.AbsoluteLocation;
expandButton.X = expandButton.X + 2;
expandButton.Y = expandButton.Y + 4;
Mouse.Click(expandButton);
GeneralUtilities.Sleep(1);
}
在这种情况下,元素左侧有一个小的下拉箭头。我无法识别,所以我识别了文件夹并操纵了点击。如果有人偶然发现这一点并且知道使用 LeanFT 执行此操作的更直接方法,我非常希望看到一个示例。如果没有,您正在这里寻求帮助 - 我希望这对您有所帮助!
理论
为了Expand
和Collapse
一个JavaITreeView
,这些是步骤:
描述
ITreeView
:ITreeView treeView = Desktop.Describe<IWindow>(new WindowDescription()) .Describe<ITreeView>(new TreeViewDescription() { AttachedText = "Etc" });
获取其中一个节点:
ITreeViewNode treeViewNode = treeView.GetNode("someNode");
展开或折叠它:
treeViewNode.Expand(); treeViewNode.Collapse();
唯一可扩展的对象是 ITreeViewNode
(即,这是具有 .Expand
方法的对象),到达节点的唯一方法是通过 ITreeView
,如上图
实践中...
你想把一个UIObject
(我怀疑这是物体识别中心识别的,对吧?)作为一个ITreeView
,这样就可以在上面调用Expand
和Collapse
了?
这是不可能的。
- 在这些 SDK 中,每个描述都是一个通用元素。在 Java 中是
UIObject
,在 Web 中是WebElement
,等等。 - 那些更独特的,比如树状视图,扩展通用的(
UIObject
)并在过程中增加一个识别属性 - 在
ITreeView
的情况下,很可能是UIObject
和NativeClass
设置为"javax.swing.JTree"
如果对象识别中心没有将可扩展对象识别为 ITreeView
,那是因为它不是。
解决方法
如果您的目标只是展开,并且手动双击有效,那么您可以:
- 识别
UIObject
; 计算您手动双击的点相对于
UIObject
左上像素的坐标。 (例如,向下 5 个像素,向右 5 个像素)您可以对其进行近似、试错或使用可以提供帮助的工具。
使用
HP.LFT.SDK.Mouse
class 双击该确切位置:var loc = theUiButton.AbsoluteLocation; var p = new System.Drawing.Point(loc.X + 5, loc.Y + 5); Mouse.DoubleClick(p, MouseButton.Left);
它现在不起作用的原因是因为
.DoubleClick
默认情况下在UIObject
的中心执行双击,我有预感这不是可扩展的地方object 是 - 所以你需要提供微调参数。