Navigate Among UI Automation Elements with TreeWalker
Este tópico contém código de exemplo que mostra como navegar entre Elementos usando o TreeWalker a classe.
Exemplo
O exemplo a seguir usa GetParent Para ir até a árvore até encontrar a elemento raiz, ou área de trabalho.O elemento logo abaixo disso é a janela-pai do elemento especificado.
AutomationElement GetTopLevelWindow(AutomationElement element)
{
TreeWalker walker = TreeWalker.ControlViewWalker;
AutomationElement elementParent;
AutomationElement node = element;
(node == elementRoot) node;
{
elementParent = walker.GetParent(node);
(elementParent == AutomationElement.RootElement) ;
node = elementParent;
}
();
node;
}
GetTopLevelWindow( element AutomationElement) AutomationElement
walker TreeWalker = TreeWalker.ControlViewWalker
elementParent AutomationElement
node AutomationElement = element
node = elementRoot
node
Do
elementParent = walker.GetParent(node)
elementParent = AutomationElement.RootElement
Do
node = elementParent
node
'GetTopLevelWindow
'Reader
O exemplo a seguir usa GetFirstfilho(AutomationElement) e GetNextSibling(Automationelemento, CacheSolicitar) Para criar um TreeView que mostra uma subárvore inteira de Exibir elementos que estão no Controlarar e que são Habilitados.
WalkEnabledElements(AutomationElement rootElement, TreeNode treeNode)
{
Condition condition1 = PropertyCondition(AutomationElement.IsControlElementProperty, );
Condition condition2 = PropertyCondition(AutomationElement.IsEnabledProperty, );
TreeWalker walker = TreeWalker( AndCondition(condition1, condition2));
AutomationElement elementNode = walker.GetFirstChild(rootElement);
(elementNode != )
{
TreeNode childTreeNode = treeNode.Nodes.Add(elementNode.Current.ControlType.LocalizedControlType);
WalkEnabledElements(elementNode, childTreeNode);
elementNode = walker.GetNextSibling(elementNode);
}
}
WalkEnabledElements( rootElement AutomationElement, treeNode TreeNode)
condition1 PropertyCondition(AutomationElement.IsControlElementProperty, )
condition2 PropertyCondition(AutomationElement.IsEnabledProperty, )
walker TreeWalker( AndCondition(condition1, condition2))
elementNode AutomationElement = walker.GetFirstChild(rootElement)
(elementNode IsNot )
childTreeNode TreeNode = treeNode.Nodes.Add(elementNode.Current.ControlType.LocalizedControlType)
WalkEnabledElements(elementNode, childTreeNode)
elementNode = walker.GetNextSibling(elementNode)
'WalkEnabledElements