1

原始问题

我有这个可展开的文件夹 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 的更直接的方法,我非常希望看到一个示例。如果没有,您正在这里寻求帮助 - 我希望这对您有所帮助!

4

1 回答 1

2

理论

为了ExpandCollapse一个 Java ITreeView,这些是步骤:

  1. 描述ITreeView

    ITreeView treeView = Desktop.Describe<IWindow>(new WindowDescription())
        .Describe<ITreeView>(new TreeViewDescription()
        {
            AttachedText = "Etc"
        });
    
  2. 获取其中一个节点:

    ITreeViewNode treeViewNode = treeView.GetNode("someNode");
    
  3. 展开或折叠它:

    treeViewNode.Expand(); treeViewNode.Collapse();
    

唯一可扩展的对象是ITreeViewNode(也就是说,这是具有该.Expand方法的对象),并且到达节点的唯一方法是通过 an ITreeView,如上所示。

在实践中...

你想把一个UIObject (我怀疑这是识别中心识别的对象,对吗?) 作为一个ITreeView,这样你就可以调用ExpandCollapse了吗?

这是不可能的。

  1. 在这些 SDK 中,每个描述都是一个通用元素。在 Java 中是 a UIObject,在 Web 中是 a WebElement,等等。
  2. 那些更独特的,比如树视图,扩展了通用的 ( UIObject) 并在过程中添加了一个更多的标识属性
  3. 在这种ITreeView情况下,很可能是UIObject with NativeClass set as"javax.swing.JTree"

如果对象识别中心没有将可扩展对象识别为ITreeView,那是因为它不是。

解决方法

如果您的目标只是扩展,并且手动双击有效,那么您可以:

  1. 识别UIObject;
  2. 计算您手动双击的点相对于左上角像素的坐标UIObject。(EG 向下 5 个像素,向右 5 个像素)

    您可以对其进行近似,尝试并尝试错误,或使用可以提供帮助的工具。

  3. 使用HP.LFT.SDK.Mouse类双击该确切位置:

    var loc = theUiButton.AbsoluteLocation;
    var p = new System.Drawing.Point(loc.X + 5, loc.Y + 5);
    
    Mouse.DoubleClick(p, MouseButton.Left);
    

    它现在不起作用的原因是.DoubleClick,默认情况下,在 的中心执行双击UIObject,我有一种预感,这不是可扩展对象所在的位置 - 所以您需要提供微调参数。

于 2018-01-31T06:03:02.927 回答