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