【问题标题】:Expanding a UIObject with Native Class of TreeViewItem使用 TreeViewItem 的本机类扩展 UIObject
【发布时间】:2018-02-01 01:54:05
【问题描述】:

原始问题

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

【问题讨论】:

    标签: c# hp-uft leanft


    【解决方案1】:

    理论

    为了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 方法的对象),并且到达节点的唯一方法是通过ITreeView,如上所示。

    在实践中...

    你想取一个UIObject(我怀疑这是什么物体识别中心识别的吧?) 作为一个ITreeView,这样你就可以调用ExpandCollapse 就可以了吗?

    这是不可能的。

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

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

    解决方法

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

    1. 识别UIObject
    2. 计算您手动双击的点相对于UIObject 左上角像素的坐标。 (例如向下 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的中心执行双击,我有一种预感,它不是可扩展对象所在的位置 - 所以你需要提供微调参数。

    【讨论】:

      猜你喜欢
      • 2012-08-27
      • 1970-01-01
      • 2019-11-13
      • 2010-12-14
      • 1970-01-01
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多