1

我正在尝试使用以下 UI 自动化代码获取组合框的列表项,并且返回零项。这个组合框中肯定有项目,所以我做错了什么?

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;
}
4

2 回答 2

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));
于 2011-07-22T16:54:39.267 回答
1

我会尝试的一些事情 1. 检查组合框是否不为空 2. 将范围更改为 comboBox.FindAll 的后代。3.当列表项实际加载到组合框下时,确保我点击了代码路径(可能是上面 jvanbrakel 建议的扩展需求)

于 2014-11-15T20:07:26.153 回答