今天获得了一个很重要的经验。
在UI Automation Element Tree里寻找某个子节点下的孙子节点(若该孙子节点是在其父节点的点击事件发生后才生成的),通过根节点直接去找该节点,会发生找不到的情况。我们可以简单的理解成从第一层节点直接去找第三层节点有时会找不到。
对于这种时而找得到,时而找不到的情况,真是让人郁闷。
有个稳妥地办法就是一级一级的找,一层找二层,二层找三层,三层找四层,以此类推。
这就像是告诉系统,要想找到宝藏,需引领它一步一步走,告诉它先进哪个门,然后再遍历其层次结构里的所有节点。否则,它只会傻乎乎的遍历其下一级的节点和某一个子节点集合,而不是遍历所有的子节点集合,它会只停留在一个子节点集合,而不会继续遍历下一个同样拥有多重节点的集合。我曾输出所有被遍历的元素,才发现这个问题。
目前,Microsoft.Windows.UIAutomation.AutomationElement的功能,我自认为做的不是很可靠,用起来没那么智能,值得信任。
等它非常完善的那一天,估计UIAutomation开发就该变得非常普遍。