使用 inspect.exe 工具,我可以看到一个自动化元素有 6 个子元素,但其中一个元素的isControlElement和isContentElement都设置为false。然后我在 c# 中使用 windows 自动化,尝试使用以下几行检索自动化元素的子元素:
var cond = new PropertyCondition(AutomationElement.IsEnabledProperty, true);
var children = addressParent.FindAll(TreeScope.Descendants, newCond);
但是我得到了除了第一个孩子之外的所有孩子,这是一个“不是控制”的孩子。使用的条件是一般条件,因为我正在寻找的孩子没有名字或 AutomationID(或任何特定标识符)。
我还尝试根据缺少的孩子特征使用不同的条件,例如
LocalizedControlTypeProperty - “文本”或 IsControlElementProperty - false 甚至搜索所有后代而不是孩子,但这些都没有帮助找到它。
值得一提的是,在 Inspect.exe 中,兄弟姐妹链接正确,缺少的控件下一个兄弟姐妹指向 6 个中的下一个,而第二个的 prev 兄弟姐妹指向缺少的一个。但是,在代码中,inspect 的第二个是第一个。缺少的控件没有子控件。