Partilhar via


Tornar codificado espera de testes de interface do usuário para eventos específicos durante a reprodução

Em uma reprodução codificada de teste da interface do usuário, você pode instruir o teste para aguardar a determinados eventos ocorrem, como, por exemplo, uma janela para aparecer, a barra de progresso desaparecer e assim por diante. Para fazer isso, use o método apropriado de UITestControl.WaitForControlXXX(), conforme descrito na tabela a seguir. Para obter um exemplo de um teste codificado de UI que aguarda por um controle para ser habilitado usando o WaitForControlEnabled() método, consulte Demonstra Passo a passo: Criação, edição e a manutenção de um teste codificado de UI.

Métodos de UITestControl.WaitForControlXXX()

Métodos de UITestControl.WaitForControlXXX()

Descrição

WaitForControlReady()

Aguarda até que o controle esteja pronto para aceitar a entrada de teclado e mouse. O mecanismo implicitamente chama essa API para todas as ações para aguardar o controle esteja pronto antes de fazer qualquer operação. No entanto, certas esotérico cenário, talvez você precise fazer a chamada explícita.

WaitForControlEnabled()

Espera-se para o controle para ser ativado quando o assistente está fazendo parte da validação da entrada assíncrona fazendo chamadas para o servidor. Por exemplo, é possível que o método para aguardar o próximo o botão do Assistente para ser ativado (de). Para obter um exemplo desse método, consulte Demonstra Passo a passo: Criação, edição e a manutenção de um teste codificado de UI.

WaitForControlExist()

Aguarda até que o controle apareça na interface do usuário. Por exemplo, você está esperando uma caixa de diálogo de erro depois que o aplicativo tenha feito a validação dos parâmetros. O tempo gasto para validação é variável. Você pode usar esse método para aguardar a caixa de diálogo de erro.

WaitForControlNotExist()

Espera-se para o controle desaparecem da interface do usuário. Por exemplo, você pode esperar que a barra de progresso desapareça.

WaitForControlPropertyEqual(String, Object)

Aguarda até que a propriedade especificada do controle para que o valor fornecido. Por exemplo, aguardar o texto de status alterar para feito.

WaitForControlPropertyNotEqual(String, Object)

Aguarda até que a propriedade especificada do controle para ter o oposto de um valor especificado. Por exemplo, você aguardar a caixa de edição para não ser somente leitura, ou seja, editável.

WaitForControlCondition(Predicate<UITestControl>)

Aguarda para retorna de predicado especificado para ser true. Isso pode ser usado para a operação de espera complexas (como condições ou) em um determinado controle. Por exemplo, você pode esperar até que o texto de status é Succeeded ou Falha conforme mostrado no código a seguir:

// Define the method to evaluate the condition 
private static bool IsStatusDone(UITestControl control) 
{ 
    WinText statusText = control as WinText; 
    return statusText.DisplayText == "Succeeded" || statusText.DisplayText == "Failed"; 
} 
// In test method, wait till the method evaluates to true 
statusText.WaitForControlCondition(IsStatusDone);

WaitForCondition<T>(T, Predicate<T>)

Os métodos anteriores são os métodos de instância de UITestControl. Esse método é um método estático. Esse método também aguarda o predicado especificado ser true , mas ele pode ser usado para a operação de espera complexas (como condições ou) em vários controles. Por exemplo, você pode esperar até que o texto de status é Succeeded ou até que uma mensagem de erro é exibida, como mostrado no código a seguir:

// Define the method to evaluate the condition 
private static bool IsStatusDoneOrError(UITestControl[] controls) 
{ 
    WinText statusText = controls[0] as WinText; 
    WinWindow errorDialog = controls[1] as WinWindow; 
    return statusText.DisplayText == "Succeeded" || errorDialog.Exists; 
} 
// In test method, wait till the method evaluates to true 
UITestControl.WaitForCondition<UITestControl[]>(new UITestControl[] { statusText, errorDialog }, IsStatusDoneOrError); 

Todos esses métodos têm comportamento a seguir:

  • Os métodos retornam true se a espera for bem-sucedida e false se a espera falhou.

  • O tempo limite implícito para a operação de espera é especificado por WaitForReadyTimeout propriedade. O valor padrão dessa propriedade é 60000 milissegundos (um minuto).

  • Os métodos têm uma sobrecarga para levar o tempo limite de explícita em milissegundos. No entanto, quando a operação de esperar resulta em uma pesquisa implícita para o controle ou, quando o aplicativo está ocupado, o tempo de espera real pode ser mais do que o tempo limite especificado.

As funções anteriores são poderosas e flexíveis e devem atender a quase todas as condições. No entanto, caso esses métodos não satisfaçam suas necessidades e você precisará de código ou um Wait(Int32), ou um Sleep(Int32) no seu código, é recomendável que você use o Playback.Wait() em vez de Thread.Sleep() API. Os motivos para isso são:

  • Você pode usar o ThinkTimeMultiplierpropriedade para modificar a duração da suspensão. Por padrão, essa variável é 1, mas você pode aumentar ou diminuir a ele para alterar o tempo de espera em todo o código. Por exemplo, se estiver testando especificamente pela rede lenta ou algum outro caso de desempenho lento, você pode alterar essa variável em um único lugar (ou até mesmo no arquivo de configuração) 1.5 para adicionar a 50% extra esperar em todos os lugares.

  • Playback.wait() internamente chama Thread.Sleep() (após acima computação) em partes menores em um loop for durante a verificação de operação de cancel\break do usuário. Em outras palavras, o Playback.Wait() permite a que você cancelar a reprodução antes do fim da espera enquanto suspensão poderá não ou exceção.

ObservaçãoObservação

Editor de teste de interface do usuário codificado permite modificar facilmente seus testes codificados da interface do usuário. Usando o Editor de teste de interface do usuário codificado, você pode localizar, exibir e editar seus métodos de teste. Você também pode editar ações de interface do usuário e seus controles associados no mapa de controle da interface do usuário. Editor de teste de interface do usuário codificados está incluído no Pack 2 do Microsoft Visual Studio 2010 recurso. Para baixar o feature pack, você deve ter um Visual Studio 2010 Ultimate, Visual Studio 2010 Premium ou Test Professional 2010 com uma assinatura do MSDN, BizSpark da Microsoft, ou do MSDN Academic Alliance. Para obter mais informações, consulte Testes de interface do usuário codificados usando o Editor de teste codificado de UI de ediçãoand Microsoft Visual Studio 2010 Feature Pack 2.

Consulte também

Tarefas

Como: Criar um teste codificado de UI

Conceitos

Teste de Interface do usuário com testes automatizados de UI

Configurações e plataformas para testes codificados da interface do usuário e a gravações de ação com suporte

Outros recursos

Demonstra Passo a passo: Criação, edição e a manutenção de um teste codificado de UI

Anatomia de um teste codificado de UI