Microsoft UI Automation не возвращает ожидаемые элементы ComboBox - PullRequest
1 голос
/ 23 июня 2011

Я пытаюсь получить списки элементов комбинированного списка, используя следующий код автоматизации пользовательского интерфейса, и возвращаются ноль элементов. В этом списке есть пункты, так что я делаю не так?

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 ]

2 голосов
/ 22 июля 2011

Возможно, элементы элемента списка еще не загружены в память. Разверните 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 голос
/ 15 ноября 2014

Несколько вещей, которые я бы попробовал 1. Проверьте, не является ли поле со списком не пустым 2. Измените область действия на потомков для comboBox.FindAll.3. Удостоверьтесь, что я нажимаю путь к коду, когда элементы списка фактически загружаются в поле со списком (может быть необходимо развернуть, как предложено выше jvanbrakel)

...