Partilhar via


Localizar um elemento de automação de interface do usuário com base na condição de uma propriedade

Este tópico contém código de exemplo que mostra como localizar um elemento dentro de Árvore com base em uma propriedade específica ou propriedades.

Exemplo

No exemplo a seguir, um conjunto de condições de propriedades são especificados que identificar um determinado elemento (ou elementos) de seu interesse na AutomationElement árvore.Uma Pesquisar para todos os elementos correspondentes, em seguida, é realizada com o FindAll Método que incorpora uma série de AndCondition Operações Booleanoas para limitar o número de elementos correspondentes.

Observação:

Quando Pesquisando a partir de RootElementVocê deve tentar obter apenas filhos diretos.Uma pesquisa por descendentes pode percorrer centenas ou mesmo milhares de elementos, possivelmente, resultando em um estouro de pilha.Se você estiver tentando obter um elemento específico em um nível inferior, você deve iniciar sua pesquisa a partir de janela do aplicativo ou um recipiente em um nível inferior.





















  FindTreeViewDescendants(
    AutomationElement targetTreeViewElement,  treeviewIndex)
{
     (targetTreeViewElement == )
        ;

    AutomationElement elementNode =
        TreeWalker.ControlViewWalker.GetFirstChild(targetTreeViewElement);

     (elementNode != )
    {
        Label elementInfo =  Label();
        elementInfo.Margin =  Thickness(0);
        clientTreeViews[treeviewIndex].Children.Add(elementInfo);

        
        elementInfoCompile =  StringBuilder();
        string controlName =
            (elementNode.Current.Name == ) ?
             : elementNode.Current.Name;
        string autoIdName =
            (elementNode.Current.AutomationId == ) ?
             : elementNode.Current.AutomationId;

        elementInfoCompile.Append(controlName)
            .Append()
            .Append(elementNode.Current.ControlType.LocalizedControlType)
            .Append()
            .Append(autoIdName)
            .Append();

        
        object objPattern;
        ExpandCollapsePattern expcolPattern;
         ( == elementNode.TryGetCurrentPattern(ExpandCollapsePattern.Pattern,  objPattern))
        {
            expcolPattern = objPattern  ExpandCollapsePattern;
             (expcolPattern.Current.ExpandCollapseState != ExpandCollapseState.LeafNode)
            {
                Button expcolButton =  Button();
                expcolButton.Margin =  Thickness(0, 0, 0, 5);
                expcolButton.Height = 20;
                expcolButton.Width = 100;
                expcolButton.Content = ;
                expcolButton.Tag = expcolPattern;
                expcolButton.Click +=
                     RoutedEventHandler(ExpandCollapse_Click);
                clientTreeViews[treeviewIndex].Children.Add(expcolButton);
            }
        }
        TogglePattern togPattern;
         ( == elementNode.TryGetCurrentPattern(TogglePattern.Pattern,  objPattern))
        {
            togPattern = objPattern  TogglePattern;
            Button togButton =  Button();
            togButton.Margin =  Thickness(0, 0, 0, 5);
            togButton.Height = 20;
            togButton.Width = 100;
            togButton.Content = ;
            togButton.Tag = togPattern;
            togButton.Click +=  RoutedEventHandler(Toggle_Click);
            clientTreeViews[treeviewIndex].Children.Add(togButton);
        }
        InvokePattern invPattern;
         ( == elementNode.TryGetCurrentPattern(InvokePattern.Pattern,  objPattern))
        {
            invPattern = objPattern  InvokePattern;
            Button invButton =  Button();
            invButton.Margin =  Thickness(0);
            invButton.Height = 20;
            invButton.Width = 100;
            invButton.Content = ;
            invButton.Tag = invPattern;
            invButton.Click +=  RoutedEventHandler(Invoke_Click);
            clientTreeViews[treeviewIndex].Children.Add(invButton);
        }
        
        elementInfo.Content = elementInfoCompile;
        Separator sep =  Separator();
        clientTreeViews[treeviewIndex].Children.Add(sep);

        
        
        
        FindTreeViewDescendants(elementNode, treeviewIndex);
        elementNode = 
            TreeWalker.ControlViewWalker.GetNextSibling(elementNode);
    }
}




















  FindTreeViewDescendants( _
 targetTreeViewElement  AutomationElement, _
 treeviewIndex  )
     (IsNothing(targetTreeViewElement)) 
        
     

     elementNode  AutomationElement = _
    TreeWalker.ControlViewWalker.GetFirstChild(targetTreeViewElement)

     Not (elementNode  )
         elementInfo   Label()
        elementInfo.Margin =  Thickness(0)
        clientTreeViews(treeviewIndex).Children.Add(elementInfo)

        elementInfoCompile =  StringBuilder()
         controlName  
         (elementNode.Current.Name = ) 
            controlName = 
        
            controlName = elementNode.Current.Name
         
         autoIdName  
         (elementNode.Current.AutomationId = ) 
            autoIdName = 
        
            autoIdName = elementNode.Current.AutomationId
         


        elementInfoCompile.Append(controlName).Append() _
        .Append(elementNode.Current.ControlType.LocalizedControlType) _
        .Append().Append(autoIdName).Append()

         objPattern  Object = 
         expcolPattern  ExpandCollapsePattern
          = elementNode.TryGetCurrentPattern(ExpandCollapsePattern.Pattern, objPattern) 
            expcolPattern = DirectCast(objPattern, ExpandCollapsePattern)
             expcolPattern.Current.ExpandCollapseState <> ExpandCollapseState.LeafNode 
                 expcolButton   Button()
                expcolButton.Margin =  Thickness(0, 0, 0, 5)
                expcolButton.Height = 20
                expcolButton.Width = 100
                expcolButton.Content = 
                expcolButton.Tag = expcolPattern
                 expcolButton.Click,  ExpandCollapse_Click
                clientTreeViews(treeviewIndex).Children.Add(expcolButton)
             
         
         togPattern  TogglePattern
          = elementNode.TryGetCurrentPattern(TogglePattern.Pattern, objPattern) 
            togPattern = DirectCast(objPattern, TogglePattern)
             togButton   Button()
            togButton.Margin =  Thickness(0, 0, 0, 5)
            togButton.Height = 20
            togButton.Width = 100
            togButton.Content = 
            togButton.Tag = togPattern
             togButton.Click,  Toggle_Click
            clientTreeViews(treeviewIndex).Children.Add(togButton)
         
         invPattern  InvokePattern
          = elementNode.TryGetCurrentPattern(InvokePattern.Pattern, objPattern) 
            invPattern = DirectCast(objPattern, InvokePattern)
             invButton   Button()
            invButton.Margin =  Thickness(0)
            invButton.Height = 20
            invButton.Width = 100
            invButton.Content = 
            invButton.Tag = invPattern
             invButton.Click,  Invoke_Click
            clientTreeViews(treeviewIndex).Children.Add(invButton)
         

        elementInfo.Content = elementInfoCompile
         sep   Separator()
        clientTreeViews(treeviewIndex).Children.Add(sep)



        FindTreeViewDescendants(elementNode, treeviewIndex)
        elementNode = TreeWalker.ControlViewWalker.GetNextSibling(elementNode)
     

  'FindTreeViewDescendants

Consulte também

Tarefas

InvokePattern, ExpandCollapsePattern e TogglePattern exemplo

Use the AutomationID Property

Conceitos

Obtendo elementos da automação interface do usuário