Use the AutomationID Property
Este tópico contém cenários e código de exemplo que mostram como e quando o AutomationIdProperty() Pode ser usado para localizar um elemento dentro de árvore.
AutomationIdProperty() Identifica exclusivamente um Elemento interface do usuário de automação de seus irmãos.Para obter mais informações sobre identificadores Propriedade relacionados ao Controle de identificação, consulte UI Automation Properties Overview.
Observação: |
---|
AutomationIdProperty() Não garante um Exclusivo de identidade em toda a árvore; Ele geralmente precisa Contêiner e informações de escopo a ser útil.Por exemplo, um aplicativo pode conter um controle de menu com vários itens de menu no nível superior que, por sua vez, têm vários itens de menu como seus filhos.Esses itens de menu secundários podem ser identificadas por um esquema genérico, como "Item1", "Item 2" e assim por diante, permitindo identificadores duplicados para os filhos entre os itens de menu de nível superior. |
Cenários
Três primário Cliente de Automação interface do usuário Foram identificados cenários de aplicativos que exigem o uso de AutomationIdProperty() Para obter resultados precisos e consistentes quando Pesquisando para elementos.
Observação: |
---|
AutomationIdProperty() Há suporte para todos Interface do usuário de automação elementos Na Modo de controle Exceto de nível superior do aplicativo Windows, Interface do usuário de automação elementos derivados Controles que não têm uma identificação ou x:UID, e Interface do usuário de automação elementos derivados Win32 Controles que têm um controle não identificação. |
Use um AutomationID exclusivo e identificável para localizar um elemento específico na árvore de automação de interface do usuário
- Use uma ferramenta como Para Relatarar o AutomationIdProperty() de um Elemento de interesse.Esse valor, em seguida, pode ser copiado e colado em um aplicativo cliente (p.ex., um script de teste) para a execução subseqüente de testes automatizados.Essa abordagem reduz e simplifica o código necessário para identificar e localizar um elemento em tempo de execução.
Cuidado: |
---|
Em geral, você deve tentar obter apenas filhos diretos das RootElement.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. |
AutomationElementCollection FindElementFromAutomationID(AutomationElement targetApp,
string automationID)
{
targetApp.FindAll(
TreeScope.Descendants,
PropertyCondition(AutomationElement.AutomationIdProperty, automationID));
}
FindElementFromAutomationID( _
targetApp AutomationElement, _
automationID ) AutomationElementCollection
targetApp.FindAll( _
TreeScope.Descendants, _
PropertyCondition( _
AutomationElement.AutomationIdProperty, automationID))
'FindElementFromAutomationID
Usar um caminho persistente para retornar a um AutomationElement identificado anteriormente
- Aplicativos cliente, de scripts de teste simples até utilitários robustos de gravação e reprodução, podem exigir acesso aos elementos que atualmente não estão instanciados, como um diálogo para abertura de arquivos ou um item de menu e, portanto, não existem na árvore de automação de interface do usuário.Esses elementos só podem ser instanciados pelo reproduzir, ou " reproduzir Voltar ", uma seqüência específica de Ações através do uso de propriedades, como AutomationID, padrões de controle e evento ouvintes.Consulte Exemplo de gerador de script de teste Para obter um exemplo que utiliza. Para gerar scripts de teste com base no usuário interação com o .
Usar um caminho relativo para retornar a um AutomationElement identificado anteriormente
- Em determinadas circunstâncias, visto que AutomationID só tem a garantia de exclusividade entre irmãos, vários elementos na árvore de autimação de interface do usuário podem ter valores idênticos na propriedade AutomationID.Nessas situações os elementos podem ser exclusivamente identificados com base no pai e, se necessário, no avô.Por exemplo, um desenvolvedor pode fornecer uma barra de menus com vários itens, cada um deles possuindo vários itens de menu filhos onde os filhos são identificados com AutomationIDs seqüenciais, tais como "Item1", "Item2", e assim por diante.Cada item de menu pode então ser identificado exclusivamente por seu AutomationID junto com o AutomationID de seu pai e, se necessário, do avô.
Consulte também
Tarefas
Localizar um elemento de automação de interface do usuário com base na condição de uma propriedade
Conceitos
Visão geral da árvore de automação de interface do usuário
Referência
AutomationIdProperty()