none
使用AutomationElement类中的findFirst方法查找元素时,TreeScope.Element代表的查询范围是啥?

    问题

  • 最近在使用AutomationElement做一个项目,用到很多查询元素的地方,选择范围的时候,children和desendants很容易理解,一个是直接子级元素,一个是子孙元素!但这个Element是啥范围呢?是兄弟级别的元素么?可为啥我用了这个范围查询兄弟控件的时候返回的确是null呢?

    2016年11月7日 12:47

答案

全部回复

  • Hi,

    如果你查找element。 这个范围必须是UI automation。查找的前提条件是UI automation 必须在一个分离的线程里面.

    这儿有使用它的代码,你可以参考一下.

    AutomationElement

    Best Regards,

    Hart


    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.


    2016年11月8日 6:29
    版主
  • 您好,感谢您的答复。不过我好像没太懂!

    范围必须是UI automation是啥意思?

    我要使用的场景是这样的,有一个Datagridview控件,现在有三行数据(列数可以多可以少)其AutomationElement对象分别用tr1,tr2,tr3来表示,我先将所有单元格的值填充完毕。现在我需要再加一行,也就是tr4对象,我想在查找的时候使用tr3.findFirst(TreeScope.Element, new Condition(...))的形式查找以提高速度。因为,如果tr4前面有很多行时,使用datagridview.findFirst(TreeScope.Children, Condition)的形式查找会变得非常慢。

    但我用我的这种方式查找时,返回的都是null,根本查不到啊!

    分离线程的话,我觉得我现在肯定是满足的。因为我写的程序和要操作的程序是两个软件,分别运行在不同的进程中的!

    2016年11月24日 0:25
  •  findFirst是用于搜索Element的下级, TreeScope.Element 是指包含元素自己。https://msdn.microsoft.com/zh-cn/library/windows/desktop/ee671699(v=vs.85).aspx#TreeScope_Children

    Bob Bao

    2016年11月24日 5:19
  • 那就是和TreeScope.Children的查询范围只差一个元素?

    2016年12月3日 5:45
  • 我觉得应该是
    2016年12月11日 11:04
  • 这样设计好不合理啊,应该有一个可以查找兄弟元素节点的scope!
    2016年12月16日 3:14