记录一次排查C#使用UI Automation获取程序元素的bug
前言
- 代码都是别人的代码,只是我来改
- 需求是要获取到其他程序的元素
- 前人的做法是记录下进程名字和title,然后把当前选中的元素向上找,一直找到根元素,生成一个类xpath的东西,找的时候根据这个类xpath从上到下找元素
问题
问题就是生成的类xpath,不太对,比如资源管理器,当选中资源管理器的地址栏的时候,在根元素和二级元素之间,多了一级
解决
需要把RawViewWalker改为使用ControlViewWalker
uiauto-treeoverview
解释
大概就是RawViewWalker包含了所有控件,但是其实有一些控件是用户看不到的叫peripheral elements
的东西,把这些东西排除掉就行了。