2011-06-23 4 views
1

J'essaie d'obtenir les éléments de liste d'une zone de liste déroulante à l'aide du code AUtomation UI suivant et aucun élément n'est renvoyé. Il y a certainement des objets dans cette boîte de dialogue, alors qu'est-ce que je fais de mal?Microsoft UI Automation ne renvoie pas les éléments ComboBox attendus

var comboBox = GetMarketAreasComboBox(); 
var items = comboBox.FindAll(TreeScope.Element, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.ListItem)); 

Où GetMarketAreasComboBox est défini comme:

private AutomationElement GetMarketAreasComboBox() 
{ 
    var control = LocalRootAutomationElement.FindFirst(TreeScope.Descendants , new PropertyCondition(AutomationElement.AutomationIdProperty, "MarketAreasComboBox")); 
    Assert.IsNotNull(control); 
    return control; 
} 

Répondre

2

Il est possible que les éléments de l'élément de la liste ne sont pas encore chargés en mémoire. Développez la zone de liste déroulante, puis vérifier les éléments 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

Quelques choses de que je l'aurais essayé 1. Vérifiez si zone de liste déroulante est non nulle 2. Modifier l'étendue aux descendants de comboBox.FindAll. 3.Assurez-vous que je tape sur le chemin du code lorsque les éléments de la liste sont effectivement chargés sous la liste déroulante (Peut être développé comme suggéré par jvanbrakel ci-dessus)

Questions connexes