记录一次排查C#使用UI Automation获取程序元素的bug

前言

  1. 代码都是别人的代码,只是我来改
  2. 需求是要获取到其他程序的元素
  3. 前人的做法是记录下进程名字和title,然后把当前选中的元素向上找,一直找到根元素,生成一个类xpath的东西,找的时候根据这个类xpath从上到下找元素

问题

问题就是生成的类xpath,不太对,比如资源管理器,当选中资源管理器的地址栏的时候,在根元素和二级元素之间,多了一级

解决

需要把RawViewWalker改为使用ControlViewWalker
uiauto-treeoverview

解释

大概就是RawViewWalker包含了所有控件,但是其实有一些控件是用户看不到的叫peripheral elements的东西,把这些东西排除掉就行了。

原文地址:https://www.cnblogs.com/iguxiaobei/p/14548665.html