Microsoft UI Automation不返回预期的ComboBox项

时间:2011-06-23 12:15:47

标签: microsoft-ui-automation

我正在尝试使用以下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;
}

2 个答案:

答案 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建议的扩展需求)