我正在尝试使用以下UI AUtomation代码获取组合框的列表项,并且返回零项。这个comobbox中肯定有项目,所以我做错了什么?
var comboBox = GetMarketAreasComboBox();
var items = comboBox.FindAll(TreeScope.Element, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.ListItem));
GetMarketAreasComboBox定义为:
private AutomationElement GetMarketAreasComboBox()
{
var control = LocalRootAutomationElement.FindFirst(TreeScope.Descendants , new PropertyCondition(AutomationElement.AutomationIdProperty, "MarketAreasComboBox"));
Assert.IsNotNull(control);
return control;
}
答案 0 :(得分:2)
列表项元素可能尚未加载到内存中。展开ComboBox,然后检查ListItem元素
var comboBox = GetMarketAreasComboBox();
var comboBoxPattern = (ExpandCollapsePattern)comboBox.GetCurrentPattern(ExpandCollapsePattern.Pattern);
comboBoxPattern.Expand();
comboBoxPattern.Collapse();
var items = comboBox.FindAll(TreeScope.Element, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.ListItem));
答案 1 :(得分:1)
我会尝试过的一些事情 1.检查组合框是否为空 2.将范围更改为comboBox.FindAll的后代。 3.确保我在组合框下实际加载列表项时遇到代码路径(可能是上面jvanbrakel建议的扩展需求)