Use o teste de IU codificado para testar seu códigoUse Coded UI test to test your code

CUITs (testes de IU codificados) impulsionam seu aplicativo por meio de sua IU (interface do usuário).Coded UI tests (CUITs) drive your application through its user interface (UI). Entre esses testes estão testes funcionais dos controles de interface de usuário.These tests include functional testing of the UI controls. Eles permitem verificar se todo o aplicativo, inclusive sua interface do usuário, está funcionando corretamente.They let you verify that the whole application, including its user interface, is functioning correctly. Os testes de IU codificados são úteis quando há validação ou outra lógica na interface do usuário, como em uma página da Web.Coded UI tests are useful where there is validation or other logic in the user interface, for example in a web page. Eles também costumam ser usados para automatizar um teste manual existente.They are also frequently used to automate an existing manual test.

Criar um teste de IU codificado no Visual Studio é fácil.Creating a Coded UI test in Visual Studio is easy. Basta realizar o teste manualmente enquanto o Construtor de Teste de IU Codificado é executado em segundo plano.You simply perform the test manually while Coded UI Test Builder runs in the background. Também é possível especificar quais valores devem ser exibidos em campos específicos.You can also specify what values should appear in specific fields. O Construtor de Teste de IU Codificado registra suas ações e gera código com base nelas.Coded UI Test Builder records your actions and generates code from them. Depois que o teste for criado, será possível editá-lo em um editor especializado que permite modificar a sequência de ações.After the test is created, you can edit it in a specialized editor that lets you modify the sequence of actions.

O Construtor de Teste de IU Codificado especializado e o editor facilitam a criação e a edição de testes IU codificado mesmo que suas habilidades principais estejam concentradas em testes, e não em codificação.The specialized Coded UI Test Builder and editor make it easy to create and edit Coded UI tests, even if your main skills are concentrated in testing rather than coding. Mas, se você for um desenvolvedor e quiser estender o teste de maneira mais avançada, o código será estruturado para simplificar a cópia e a adaptação.But if you are a developer and you want to extend the test in a more advanced way, the code is structured so that it is straightforward to copy and adapt. Por exemplo, convém registrar um teste para comprar algo em um site e editar o código gerado para adicionar um loop que compre muitos itens.For example, you might record a test to buy something at a website, and then edit the generated code to add a loop that buys many items.

Note

O teste de IU codificado para teste funcional controlado por interface do usuário automatizado foi preterido.Coded UI Test for automated UI-driven functional testing is deprecated. O Visual Studio 2019 será a última versão em que o teste de IU codificado estará disponível.Visual Studio 2019 is the last version where Coded UI Test will be available. É recomendável usar o Selenium para testar aplicativos Web e Appium com WinAppDriver para testar aplicativos de área de trabalho e da UWP.We recommend using Selenium for testing web apps and Appium with WinAppDriver for testing desktop and UWP apps. Considere Xamarin.UITest para testar aplicativos iOS e Android usando a estrutura de teste NUnit.Consider Xamarin.UITest for testing iOS and Android apps using the NUnit test framework.

RequisitosRequirements

  • Visual Studio EnterpriseVisual Studio Enterprise
  • Componente de teste de IU codificadoCoded UI test component

Para obter mais informações sobre quais plataformas e configurações são compatíveis com testes de IU codificados, confira Plataformas compatíveis.For more information about which platforms and configurations are supported by Coded UI tests, see Supported platforms.

Instalar o componente de teste de IU codificadoInstall the Coded UI test component

Para acessar as ferramentas e os modelos do teste de IU codificado, instale o componente Teste de IU Codificado do Visual Studio.To access the Coded UI test tools and templates, install the Coded UI test component of Visual Studio.

  1. Inicie o Instalador do Visual Studio escolhendo Ferramentas > Obter Ferramentas e Recursos.Launch Visual Studio Installer by choosing Tools > Get Tools and Features.

  2. No Instalador do Visual Studio, escolha a guia Componentes individuais e, em seguida, role para baixo até a seção Depuração e testes.In Visual Studio Installer, choose the Individual components tab, and then scroll down to the Debugging and testing section. Selecione o componente Teste de IU Codificado.Select the Coded UI test component.

    Componente de teste de IU codificado

  3. Selecione Modificar.Select Modify.

Criar um teste de IU codificadoCreate a Coded UI test

  1. Crie um projeto de teste de IU codificado.Create a Coded UI test project.

    Os testes de IU codificados devem estar contidos em um projeto de teste de IU codificado.Coded UI tests must be contained in a Coded UI test project. Se você ainda não tiver um projeto de teste de IU codificado, crie um.If you don't already have a Coded UI test project, create one. Escolha Arquivo > Novo > Projeto.Choose File > New > Project. Pesquise o modelo de Projeto de Teste de IU Codificado e selecione-o.Search for and select the Coded UI Test Project project template.

    Modelo de projeto de teste de IU codificado na caixa de diálogo Novo Projeto

    Note

    Se o modelo Projeto de Teste de IU Codificado não for exibido, será necessário instalar o componente Teste de IU Codificado.If you don't see the Coded UI Test Project template, you need to install the Coded UI test component.

  2. Adicione um arquivo de teste de IU codificado.Add a Coded UI test file.

    Se tiver acabado de criar um projeto de IU codificado, o primeiro arquivo CUIT será adicionado automaticamente.If you just created a Coded UI project, the first CUIT file is added automatically. Para adicionar outro arquivo de teste, abra o menu de atalho no projeto de teste de IU codificado em Gerenciador de Soluções e, em seguida, escolha Adicionar > Teste de IU Codificado.To add another test file, open the shortcut menu on the Coded UI test project in Solution Explorer, and then choose Add > Coded UI Test.

    Na caixa de diálogo Gerar Código para Teste de IU Codificado, escolha Registrar ações > Editar o mapa de interface do usuário ou adicionar declarações.In the Generate Code for Coded UI Test dialog box, choose Record actions > Edit UI map or add assertions.

    Caixa de diálogo Gerar Código para Teste de IU Codificado

    O Construtor de Teste de IU Codificado é exibido.The Coded UI Test Builder appears.

    Construtor de Teste de IU Codificado

  3. Registre uma sequência de ações.Record a sequence of actions.

    Para começar a registrar, escolha o ícone Registrar.To start recording, choose the Record icon. Realize as ações que você quer testar no aplicativo, inclusive iniciá-lo, se isso for necessário.Perform the actions that you want to test in your application, including starting the application if that is required. Por exemplo, se você estiver testando um aplicativo Web, convém iniciar um navegador, navegar até o site e entrar no aplicativo.For example, if you are testing a web application, you might start a browser, navigate to the website, and sign in to the application.

    Para pausar o registro, por exemplo, se você precisar lidar com emails recebidos, escolha Pausar.To pause recording, for example if you have to deal with incoming mail, choose Pause.

    Warning

    Todas as ações realizadas na área de trabalho serão registradas.All actions performed on the desktop will be recorded. Pause a gravação se estiver realizando ações que possam levar à exclusão de dados confidenciais na gravação.Pause the recording if you are performing actions that may lead to sensitive data being included in the recording.

    Para excluir ações registradas por equívoco, escolha Editar Etapas.To delete actions that you recorded by mistake, choose Edit Steps.

    Para gerar um código que replicará as ações, escolha o ícone Gerar Código e digite um nome e uma descrição para o método de teste de IU codificado.To generate code that will replicate your actions, choose the Generate Code icon and type a name and description for your Coded UI test method.

  4. Verifique os valores nos campos de interface do usuário, como caixas de texto.Verify the values in UI fields such as text boxes.

    Escolha Adicionar Declarações no Construtor de Teste de IU Codificado e, em seguida, escolha um controle de interface do usuário no aplicativo em execução.Choose Add Assertions in the Coded UI Test Builder, and then choose a UI control in your running application. Na lista de propriedades exibida, selecione uma propriedade, por exemplo, Texto em uma caixa de texto.In the list of properties that appears, select a property, for example, Text in a text box. No menu de atalho, escolha Adicionar Asserção.On the shortcut menu, choose Add Assertion. Na caixa de diálogo, selecione o operador de comparação, o valor de comparação e a mensagem de erro.In the dialog box, select the comparison operator, the comparison value, and the error message.

    Feche a janela de asserção e escolha Gerar Código.Close the assertion window and choose Generate Code.

    Elemento de destino do teste de IU codificado

    Tip

    Alterne entre o registro de ações e a verificação de valores.Alternate between recording actions and verifying values. Gere códigos no final de cada sequência de ações ou verificações.Generate code at the end of each sequence of actions or verifications. Se quiser, você poderá inserir novas ações e verificações depois.If you want, you will be able to insert new actions and verifications later.

    Para obter mais detalhes, confira Validar as propriedades de controles.For more details, see Validate properties of controls.

  5. Exiba o código de teste gerado.View the generated test code.

    Para exibir o código gerado, feche a janela Construtor de Teste de IU.To view the generated code, close the UI Test Builder window. No código, é possível ver os nomes que você deu a cada etapa.In the code, you can see the names that you gave to each step. O código está no arquivo CUIT que você criou:The code is in the CUIT file that you created:

    [CodedUITest]
    public class CodedUITest1
    { ...
      [TestMethod]
      public void CodedUITestMethod1()
      {
          this.UIMap.AddTwoNumbers();
          this.UIMap.VerifyResultValue();
          // To generate more code for this test, select
          // "Generate Code" from the shortcut menu.
      }
    }
    
  6. Adicione mais ações e asserções.Add more actions and assertions.

    Coloque o cursor no ponto apropriado no método de teste e, no menu de atalho, escolha Gerar Código para Teste de IU Codificado.Place the cursor at the appropriate point in the test method and then, on the shortcut menu, choose Generate Code for Coded UI Test. O novo código será inserido nesse ponto.New code will be inserted at that point.

  7. Edite os detalhes das ações de teste e as asserções.Edit the detail of the test actions and the assertions.

    Abra UIMap.uitest.Open UIMap.uitest. Esse arquivo é aberto no Editor de Teste de IU Codificado, em que é possível editar qualquer sequência de ações registradas, além de editar as declarações.This file opens in the Coded UI Test Editor, where you can edit any sequence of actions that you recorded as well as edit your assertions.

    Editor de Testes de Interface de Usuário Codificada

    Para obter mais informações, confira Editar testes de IU codificados usando o Editor de Teste de IU Codificado.For more information, see Edit Coded UI tests using the Coded UI Test editor.

  8. Execute o teste.Run the test.

    Use o Gerenciador de Testes ou abra o menu de atalho no método de teste e, em seguida, escolha Executar Testes.Use Test Explorer, or open the shortcut menu in the test method, and then choose Run Tests. Para obter mais informações sobre como executar testes, consulte Executar testes de unidade com o Gerenciador de Testes e Opções adicionais para executar testes de IU codificados na seção O que vem a seguir?, no final deste tópico.For more information about how to run tests, see Run unit tests with Test Explorer and Additional options for running Coded UI tests in the What's next? section at the end of this topic.

As seções restantes neste tópico fornecem mais detalhes sobre as etapas desse procedimento.The remaining sections in this topic provide more detail about the steps in this procedure.

Para obter um exemplo mais detalhado, confira Passo a passo: como criar, editar e manter um teste de IU codificado.For a more detailed example, see Walkthrough: Creating, editing, and maintaining a Coded UI test. Neste passo a passo, você criará um aplicativo simples do WPF (Windows Presentation Foundation) para demonstrar como criar, editar e manter um teste de IU codificado.In the walkthrough, you will create a simple Windows Presentation Foundation (WPF) application to demonstrate how to create, edit, and maintain a Coded UI test. O passo a passo fornece soluções para corrigir os testes que foram interrompidos por vários problemas de timing e refatoração de controle.The walkthrough provides solutions for correcting tests that have been broken by various timing issues and control refactoring.

Iniciar e parar o aplicativo em testeStart and stop the application under test

Se não quiser iniciar e parar o aplicativo, o navegador ou o banco de dados separadamente para cada teste, faça um dos seguintes:If you don't want to start and stop the application, browser, or database separately for each test, do one of the following:

  • Se não quiser registrar as ações para iniciar o aplicativo em teste, será necessário iniciá-lo antes de escolher o ícone Registrar.If you do not want to record the actions to start your application under test, you must start your application before you choose the Record icon.

  • No final de um teste, o processo no qual o teste é executado é encerrado.At the end of a test, the process in which the test runs is terminated. Se tiver iniciado o aplicativo no teste, normalmente, o aplicativo é fechado.If you started your application in the test, the application usually closes. Se não quiser que o teste feche o aplicativo quando terminar, adicione um arquivo .runsettings à solução e usar a opção KeepExecutorAliveAfterLegacyRun.If you do not want the test to close your application when it exits, add a .runsettings file to your solution, and use the KeepExecutorAliveAfterLegacyRun option. Para obter mais informações, consulte Configurar testes de unidade usando um arquivo .runsettings.For more information, see Configure unit tests by using a .runsettings file.

  • Adicione um método de inicialização do teste, identificado por um atributo [TestInitialize], que executa o código no início de cada método de teste.Add a test initialize method, identified by a [TestInitialize] attribute, which runs code at the start of each test method. Por exemplo, você poderia iniciar o aplicativo do método TestInitialize.For example, you could start the application from the TestInitialize method.

  • Adicione um método de limpeza do teste, identificado por um atributo [TestCleanup], que executa o código no final de cada método de teste.Add a test cleanup method, identified by a [TestCleanup] attribute, that runs code at the end of each test method. Por exemplo, o método para fechar o aplicativo poderia ser chamado do método TestCleanup.For example, the method to close the application could be called from the TestCleanup method.

Validar as propriedades de controles de IUValidate the properties of UI controls

É possível usar o Construtor de Teste de IU Codificado para adicionar um controle de interface do usuário ao Microsoft.VisualStudio.TestTools.UITest.Common.UIMap.UIMap para o teste ou gerar código para um método de validação que usa uma asserção para um controle de interface do usuário.You can use the Coded UI Test Builder to add a user interface (UI) control to the Microsoft.VisualStudio.TestTools.UITest.Common.UIMap.UIMap for your test, or to generate code for a validation method that uses an assertion for a UI control.

Para gerar declarações para os controles de interface do usuário, escolha a ferramenta Adicionar Declarações no Construtor de Teste de IU Codificado e arraste-a até o controle no aplicativo em teste que você deseja verificar se está correto.To generate assertions for your UI controls, choose the Add Assertions tool in the Coded UI Test Builder and drag it to the control on the application under test that you want to verify is correct. Quando a caixa contornar o controle, solte o mouse.When the box outlines your control, release the mouse. O código da classe de controle é criado imediatamente no arquivo UIMap.Designer.cs.The control class code is immediately created in the UIMap.Designer.cs file.

Elemento de destino do teste de IU codificado

Agora, as propriedades desse controle serão listadas na caixa de diálogo Adicionar Asserções.The properties for this control are now listed in the Add Assertions dialog box.

Outra maneira de navegar até um determinado controle é escolhendo a seta (<<) para expandir a exibição do Mapa de Controles de interface do usuário.Another way of navigating to a particular control is to choose the arrow (<<) to expand the view for the UI Control Map. Para encontrar um controle pai, irmão ou filho, é possível clicar em qualquer lugar no mapa e usar as telas de direção para navegar pela árvore.To find a parent, sibling, or child control, you can click anywhere on the map and use the arrow keys to move around the tree.

Propriedades de teste de IU codificado

Tip

Se você não vir nenhuma propriedade quando selecionar um controle em seu aplicativo ou não vir o controle no mapa de controle de interface do usuário, verifique se o controle tem uma ID exclusiva no código do aplicativo.If you don't see any properties when you select a control in your application, or you don't see the control in the UI Control Map, verify that the control has a unique ID in the application code. A ID exclusiva pode ser um atributo de ID HTML ou um UId do WPF.The unique ID can be an HTML ID attribute or a WPF UId.

Depois, abra o menu de atalho na propriedade do controle de interface do usuário que você deseja verificar e aponte para Adicionar Asserção.Next, open the shortcut menu on the property for the UI control that you want to verify, and then point to Add Assertion. Na caixa de diálogo Adicionar Asserção, selecione o Comparador da asserção, por exemplo, AreEqual e digite o valor da asserção em Valor de Comparação.In the Add Assertion dialog box, select the Comparator for your assertion, for example AreEqual, and type the value for your assertion in Comparison Value.

Asserções do teste de IU codificado

Quando tiver adicionado todas as asserções do teste, escolha OK.When you have added all your assertions for your test, choose OK.

Para gerar o código das asserções e adicionar o controle ao mapa de interface do usuário, escolha o ícone Gerar Código.To generate the code for your assertions and add the control to the UI map, choose the Generate Code icon. Digite um nome para o método de teste de IU codificado e uma descrição para o método, que serão adicionados como comentários para ele.Type a name for your Coded UI test method and a description for the method, which will be added as comments for the method. Escolha Adicionar e Gerar.Choose Add and Generate. Em seguida, escolha o ícone Fechar para fechar o Construtor de Teste de IU Codificado.Next, choose the Close icon to close the Coded UI Test Builder. Isso gera um código semelhante ao código a seguir.This generates code similar to the following code. Por exemplo, se o nome inserido for AssertForAddTwoNumbers, o código terá a aparência deste exemplo:For example, if the name you entered is AssertForAddTwoNumbers, the code will look like this example:

  • Adiciona uma chamada ao método de asserção AssertForAddTwoNumbers para o método de teste no arquivo de teste de IU codificado:Adds a call to the assert method AssertForAddTwoNumbers to the test method in your Coded UI test file:

    [TestMethod]
    public void CodedUITestMethod1()
    {
        this.UIMap.AddTwoNumbers();
        this.UIMap.AssertForAddTwoNumbers();
    }
    

    É possível editar esse arquivo para alterar a ordem das etapas e das asserções ou criar novos métodos de teste.You can edit this file to change the order of the steps and assertions, or to create new test methods. Para adicionar mais código, coloque o cursor no método de teste e, no menu de atalho, escolha Gerar Código para Teste de IU Codificado.To add more code, place the cursor on the test method and on the shortcut menu choose Generate Code for Coded UI Test.

  • Adiciona um método chamado AssertForAddTwoNumbers ao mapa de interface do usuário (UIMap.uitest).Adds a method called AssertForAddTwoNumbers to your UI map (UIMap.uitest). Esse arquivo é aberto no Editor de Teste de IU Codificado, em que é possível editar as declarações.This file opens in the Coded UI Test Editor, where you can edit the assertions.

    Editar asserção usando o Editor de Teste de IU Codificado

    Para obter mais informações, confira Editar testes de IU codificados usando o editor de teste de IU Codificado.For more information, see Edit Coded UI tests using the Coded UI test editor.

    Exiba também o código gerado do método de declaração em UIMap.Designer.cs.You can also view the generated code of the assertion method in UIMap.Designer.cs. Porém, você não deve editar esse arquivo.However, you should not edit this file. Caso deseje criar uma versão adaptada do código, copie os métodos para outro arquivo, como UIMap.cs, renomeie os métodos e edite-os nesse arquivo.If you want to make an adapted version of the code, copy the methods to another file such as UIMap.cs, rename the methods, and edit them there.

    public void AssertForAddTwoNumbers()
    {
        ...
    }
    

Selecionar um controle oculto usando o tecladoSelect a hidden control using the keyboard

Se o controle que você deseja selecionar perder o foco e desaparecer quando você tentar selecionar a ferramenta Adicionar Declarações no Construtor de Teste de IU Codificado:If the control you want to select loses focus and disappears when you select the Add Assertions tool from the Coded UI Test Builder:

Às vezes, ao adicionar controles e validar suas propriedades, talvez você precise usar o teclado.Sometimes, when you add controls and verify their properties, you might have to use the keyboard. Por exemplo, quando você tentar gravar um teste de IU codificado que usa um controle de menu de clique com o botão direito do mouse, a lista de itens de menu no controle perderá o foco e desaparecerá se você tentar selecionar a ferramenta Adicionar Declarações no Construtor de Teste de IU Codificado.For example, when you try to record a Coded UI test that uses a right-click menu control, the list of menu items in the control will lose focus and disappear when you try to select the Add Assertions tool from the Coded UI Test Builder. Isso é mostrado na ilustração a seguir, em que o menu de clique com o botão direito do mouse no Internet Explorer perde o foco e desaparece quando você tenta selecioná-lo com a ferramenta Adicionar Declarações.This is demonstrated in the following illustration, where the right-click menu in Internet Explorer loses focus and disappears if you try to select it with the Add Assertions tool.

CodedUITest_SelectControlKeyboard

Para usar o teclado e selecionar um controle de interface de usuário, focalize o controle usando o mouse.To use the keyboard to select a UI control, hover over the control with the mouse. Em seguida, mantenha as teclas Ctrl e I pressionadas simultaneamente.Then hold down the Ctrl key and the I key at the same time. Solte as teclas.Release the keys. O controle é registrado pelo Construtor de Teste de IU Codificado.The control is recorded by the Coded UI Test Builder.

Registrar manualmente passagens do mouseManually record mouse hovers

Se não conseguir registrar uma passagem do mouse sobre um controle:If you can't record a mouse hover on a control:

Em algumas circunstâncias, um determinado controle usado em um teste de IU codificado pode exigir que você use o teclado para registrar manualmente os eventos de passagem do mouse.Under some circumstances, a particular control that's being used in a Coded UI test might require you to use the keyboard to manually record mouse hover events. Por exemplo, quando você testa um aplicativo do Windows Form ou do Windows Presentation Foundation (WPF), talvez haja código personalizado.For example, when you test a Windows Form or a Windows Presentation Foundation (WPF) application, there might be custom code. Ou talvez haja um comportamento especial definido para a passagem do mouse sobre um controle, como a expansão de um nó de árvore quando um usuário o focaliza.Or, there might be special behavior defined for hovering over a control, such as a tree node expanding when a user hovers over it. Para testar circunstâncias como essa, você precisa notificar manualmente o Construtor de Teste de IU Codificado que está focalizando o controle pressionando as teclas predefinidas do teclado.To test circumstances like these, you have to manually notify the Coded UI Test Builder that you are hovering over the control by pressing predefined keyboard keys.

Ao realizar o teste de IU codificado, focalize o controle.When you perform your Coded UI test, hover over the control. Em seguida, mantenha a tecla Ctrl pressionada, enquanto pressiona e mantém pressionadas as teclas Shift e R do teclado.Then press and hold Ctrl, while you press and hold the Shift and R keys on your keyboard. Solte as teclas.Release the keys. Um evento de passagem do mouse é gravado pelo Construtor de Teste de IU Codificado.A mouse hover event is recorded by the Coded UI Test Builder.

CodedUI_Hover

Depois que você gerar o método de teste, um código semelhante ao seguinte exemplo será adicionado ao arquivo UIMap.Designer.cs:After you generate the test method, code similar to the following example will be added to the UIMap.Designer.cs file:

// Mouse hover '1' label at (87, 9)
Mouse.Hover(uIItem1Text, new Point(87, 9));

Configurar atribuições de teclado de passagem do mouseConfigure mouse-hover keyboard assignments

Se a atribuição de tecla para capturar eventos de passagem do mouse estiver sendo usada em outro lugar do ambiente:If the key assignment for capturing mouse hover events is being used elsewhere in my environment:

Se necessário, a atribuição de teclado padrão de Ctrl+Shift+R usada para aplicar eventos de passagem do mouse nos testes de IU codificados poderá ser configurada para usar teclas diferentes.If necessary, the default keyboard assignment of Ctrl+Shift+R that is used to apply mouse hover events in your Coded UI tests can be configured to use different keys.

Warning

Você não deve alterar as atribuições de teclado para eventos de passagem do mouse em circunstâncias comuns.You should not have to change the keyboard assignments for mouse hover events under ordinary circumstances. Tenha cuidado ao definir a atribuição de teclado.Use caution when reassigning the keyboard assignment. A opção talvez já esteja em uso em outro lugar dentro do Visual Studio ou no aplicativo que está sendo testado.Your choice might already be in use elsewhere within Visual Studio or the application being tested.

Para alterar as atribuições de teclado, modifique o seguinte arquivo de configuração:To change the keyboard assignments, modify the following configuration file:

%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CodedUITestBuilder.exe.config%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CodedUITestBuilder.exe.config

No arquivo de configuração, altere os valores das teclas HoverKeyModifier e HoverKey para modificar as atribuições de teclado:In the configuration file, change the values for the HoverKeyModifier and HoverKey keys to modify the keyboard assignments:

<!-- Begin : Background Recorder Settings -->
<!-- HoverKey to use. -->
<add key="HoverKeyModifier" value="Control, Shift"/>
<add key="HoverKey" value="R"/>

Definir passagens do mouse implícitas para o navegador da WebSet implicit mouse hovers for the web browser

Se tiver problemas para registrar passagens do mouse em um site:If you're having issues recording mouse hovers on a website:

Em muitos sites, quando você focaliza um determinado controle, ele expande para mostrar detalhes adicionais.In many websites, when you hover over a particular control, it expands to show additional details. Geralmente, eles parecem menus em aplicativos da área de trabalho.Generally, these look like menus in desktop applications. Como esse é um padrão comum, os testes de IU codificados permitem passagens do mouse implícitas na navegação na Web.Because this is a common pattern, Coded UI tests enable implicit hovers for web browsing. Por exemplo, se você registrar passagens do mouse no Internet Explorer, será acionado um evento.For example, if you record hovers in Internet Explorer, an event is fired. Esses eventos podem acarretar o registro de passagens redundantes do mouse.These events can lead to redundant hovers getting recorded. Por isso, as passagens do mouse implícitas são registradas com ContinueOnError definido como true no arquivo de configuração de teste de interface do usuário.Because of this, implicit hovers are recorded with ContinueOnError set to true in the UI test configuration file. Isso permite que a reprodução continue em caso de falha em um evento de passagem do mouse.This allows playback to continue if a hover event fails.

Para permitir o registro de passagens do mouse implícitas em um navegador da Web, abra o arquivo de configuração:To enable the recording of implicit hovers in a web browser, open the configuration file:

%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CodedUITestBuilder.exe.config%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CodedUITestBuilder.exe.config

Verifique se o arquivo de configuração está com a chave RecordImplicitiHovers definida para um valor de true, como mostrado no exemplo a seguir:Verify that the configuration file has the key RecordImplicitiHovers set to a value of true as shown in the following sample:

<!--Use this to enable/disable recording of implicit hovers.-->
<add key="RecordImplicitHover" value="true"/>

Personalizar o teste de IU codificadoCustomize the Coded UI test

Depois de criar o teste de IU codificado, você poderá editá-lo usando qualquer uma destas ferramentas no Visual Studio:After you've created your Coded UI test, you can edit it by using any of the following tools in Visual Studio:

O código geradoThe generated code

Quando você escolhe Gerar Código, diversas partes do código são criadas:When you choose Generate Code, several pieces of code are created:

  • Uma linha no método de teste.A line in the test method.

    [CodedUITest]
    public class CodedUITest1
    { ...
      [TestMethod]
      public void CodedUITestMethod1()
      {
          this.UIMap.AddTwoNumbers();
          // To generate more code for this test, select
          // "Generate Code" from the shortcut menu.      }
    }
    

    É possível clicar com o botão direito do mouse nesse método para adicionar mais ações registradas e verificações.You can right-click in this method to add more recorded actions and verifications. Também é possível editá-lo para estender ou modificar o código.You can also edit it manually to extend or modify the code. Por exemplo, você poderia embutir parte do código em um loop.For example, you could enclose some of the code in a loop.

    Também é possível adicionar novos métodos de teste e adicionar código a eles da mesma forma.You can also add new test methods and add code to them in the same way. Cada método de teste deve ter o atributo [TestMethod].Each test method must have the [TestMethod] attribute.

  • Um método em UIMap.uitest.A method in UIMap.uitest.

    Esse método inclui os detalhes das ações registradas ou o valor verificado por você.This method includes the detail of the actions you recorded or the value that you verified. Edite esse código abrindo UIMap.uitest.You can edit this code by opening UIMap.uitest. Ele é aberto em um editor especializado, no qual é possível excluir ou refatorar as ações registradas.It opens in a specialized editor in which you can delete or refactor the recorded actions.

    Exiba também o método gerado em UIMap.Designer.cs.You can also view the generated method in UIMap.Designer.cs. Esse método realiza as ações registradas quando você executa o teste.This method performs the actions that you recorded when you run the test.

    // File: UIMap.Designer.cs
    public partial class UIMap
    {
      /// <summary>
      /// Add two numbers
      /// </summary>
      public void AddTwoNumbers()
      { ...   }
    }
    

    Warning

    Você não deve editar esse arquivo, porque ele será registrado quando mais testes forem criados.You should not edit this file, because it will be regenerated when you create more tests.

    É possível criar versões adaptadas desses métodos copiando-os em UIMap.cs.You can make adapted versions of these methods by copying them to UIMap.cs. Por exemplo, você poderia criar uma versão parametrizada que seria chamada a partir de um método de teste:For example, you could make a parameterized version that you could call from a test method:

    // File: UIMap.cs
    public partial class UIMap // Same partial class
    {
      /// <summary>
      /// Add two numbers - parameterized version
      /// </summary>
      public void AddTwoNumbers(int firstNumber, int secondNumber)
      { ...   // Code modified to use parameters.
      }
    }
    
  • Declarações em UIMap.uitest.Declarations in UIMap.uitest.

    Essas declarações representam os controles de interface de usuário do aplicativo usados pelo teste.These declarations represent the UI controls of the application that are used by your test. Elas são usadas pelo código gerado para operar os controles e acessar suas propriedades.They are used by the generated code to operate the controls and access their properties.

    Também será possível usá-las para gravar seu próprio código.You can also use them if you write your own code. Por exemplo, é possível fazer o método de teste escolher um hiperlink em um aplicativo Web, digitar um valor em uma caixa de texto ou ramificar e utilizar ações de testes diferentes com base no valor de um campo.For example, you can have your test method choose a hyperlink in a web application, type a value in a text box, or branch off and take different testing actions based on a value in a field.

    É possível adicionar vários testes de IU codificados e vários objetos e arquivos de mapa de IU para facilitar os testes de um aplicativo grande.You can add multiple Coded UI tests and multiple UI map objects and files to facilitate testing a large application. Para obter mais informações, confira Testar um aplicativo grande com vários Mapas de Interface do Usuário.For more information, see Test a large application with multiple UI Maps.

Para obter mais informações sobre o código gerado, confira Anatomia de um teste de IU codificado.For more information about the generated code, see Anatomy of a coded UI test.

Propriedades e ações de controle de IU codificadoCoded UI control actions and properties

Quando você trabalha com controles de teste de IU em testes de IU codificados, eles são separados em duas partes: ações e propriedades.When you work with UI test controls in Coded UI tests they are separated into two parts: actions and properties.

  • A primeira parte consiste em ações, que é possível realizar em controles de teste de IU.The first part consists of actions that you can perform on UI test controls. Por exemplo, os testes de IU codificados podem simular cliques do mouse em um controle de teste de IU ou simular teclas pressionadas no teclado para afetar um controle de teste de IU.For example, Coded UI tests can simulate mouse clicks on a UI test control, or simulate keys typed on the keyboard to affect a UI test control.

  • A segunda parte consiste em permitir que você obtenha e defina as propriedades em um controle de teste de IU.The second part consists of enabling you to get and set properties on a UI test control. Por exemplo, os testes de IU codificados podem obter a contagem de itens em um ListBox ou definir um CheckBox no estado selecionado.For example, Coded UI tests can get the count of items in a ListBox, or set a CheckBox to the selected state.

Acessando Ações do Controle de Teste de IUAccessing Actions of UI Test Control

Para realizar ações em controles de teste de IU, como cliques do mouse ou ações de teclado, use os métodos nas classes Mouse e Keyboard:To perform actions on UI test controls, such as mouse clicks or keyboard actions, use the methods in the Mouse and Keyboard classes:

  • Para realizar uma ação orientada pelo mouse, como um clique do mouse em um controle de teste de IU, use Click.To perform a mouse-oriented action, such as a mouse click, on a UI test control, use Click.

    Mouse.Click(buttonCancel);

  • Para realizar uma ação orientada pelo teclado, como digitar em um controle de edição, use SendKeys.To perform a keyboard-oriented action, such as typing into an edit control, use SendKeys.

    Keyboard.SendKeys(textBoxDestination, @"C:\Temp\Output.txt");

Acessando Propriedades do Controle de Teste de IUAccessing Properties of UI Test Control

Para obter e definir valores de propriedade específicas de controle de interface de usuário, é possível obter e definir diretamente os valores como as propriedades de um controle ou usar os métodos UITestControl.GetProperty e UITestControl.SetProperty com o nome da propriedade específica que você deseja obter ou definir.To get and set UI control specific property values, you can directly get or set the values the properties of a control, or you can use the UITestControl.GetProperty and UITestControl.SetProperty methods with the name of the specific property that you want you get or set.

GetProperty retorna um objeto, que pode ser convertido no Type apropriado.GetProperty returns an object, which can then be cast to the appropriate Type. SetProperty aceita um objeto para o valor da propriedade.SetProperty accepts an object for the value of the property.

Para obter ou definir propriedades de controles de teste de IU diretamenteTo get or set properties from UI test controls directly

Com controles que derivam de UITestControl, como HtmlList ou WinComboBox, você pode obter ou definir os valores de propriedade diretamente.With controls that derive from UITestControl, such as HtmlList or WinComboBox, you can get or set their property values directly. O código a seguir mostra alguns exemplos:The following code shows some examples:

int i = myHtmlList.ItemCount;
myWinCheckBox.Checked = true;

Para obter propriedades de controles de teste de IUTo get properties from UI test controls

  • Para obter um valor de propriedade de um controle, use GetProperty.To get a property value from a control, use GetProperty.

  • Para especificar a propriedade de controle a ser obtida, use a cadeia de caracteres apropriada da classe PropertyNames em cada controle como parâmetro para GetProperty.To specify the property of the control to get, use the appropriate string from the PropertyNames class in each control as the parameter to GetProperty.

  • GetProperty retorna o tipo de dados apropriado, mas esse valor retornado é convertido como um Object.GetProperty returns the appropriate data type, but this return value is cast as an Object. Em seguida, o Object de retorno deve ser convertido como tipo apropriado.The return Object must then be cast as the appropriate type.

    Exemplo:Example:

    int i = (int)GetProperty(myHtmlList.PropertyNames.ItemCount);

Para definir propriedades para controles de teste de IUTo set properties for UI test controls

  • Para obter uma propriedade em um controle, use SetProperty.To set a property in a control, use SetProperty.

  • Para especificar a propriedade do controle a ser definida, use a cadeia de caracteres apropriada da classe PropertyNames como primeiro parâmetro para SetProperty, com o valor da propriedade como segundo parâmetro.To specify the property of the control to set, use the appropriate string from the PropertyNames class as the first parameter to SetProperty, with the property value as the second parameter.

    Exemplo:Example:

    SetProperty(myWinCheckBox.PropertyNames.Checked, true);

DepurarDebug

Você pode analisar testes de IU codificados usando logs de teste de IU codificado.You can analyze Coded UI tests using Coded UI test logs. Os logs de teste de IU codificado filtram e registram informações importantes sobre as execuções de teste de IU codificado.Coded UI test logs filter and record important information about your Coded UI test runs. O formato dos logs permite depurar rapidamente os problemas.The format of the logs lets you debug issues quickly. Para obter mais informações, confira Analisar testes de IU codificados usando logs de teste de IU codificado.For more information, see Analyze coded UI tests using coded UI test logs.

O que vem a seguir?What's next?

Opções adicionais para executar testes de IU codificados: É possível executar testes de IU codificados diretamente no Visual Studio, conforme descrito anteriormente neste tópico.Additional options for running Coded UI tests: You can run Coded UI tests directly from Visual Studio, as described earlier in this topic. Além disso, você pode executar testes automatizados de interface do usuário no Microsoft Test Manager ou usando o Azure Pipelines.Additionally, you can run automated UI tests from Microsoft Test Manager, or using Azure Pipelines. Quando são automatizados, os testes de IU codificados precisam interagir com a área de trabalho quando executados, diferentemente de outros testes automatizados.When Coded UI tests are automated, they have to interact with the desktop when you run them, unlike other automated tests.

Adição de suporte a controles personalizados: A estrutura do teste de IU codificado não dá suporte a todas as interfaces do usuário possíveis e pode não dar suporte à interface do usuário que você deseja testar.Adding support for custom controls: The Coded UI testing framework does not support every possible UI and might not support the UI you want to test. Por exemplo, você não pode criar imediatamente um teste de IU codificado para a IU do Microsoft Excel.For example, you cannot immediately create a Coded UI test of the UI for Microsoft Excel. Porém, você pode criar uma extensão para o framework de teste de IU codificado que é compatível com um controle personalizado.However, you can create an extension to the Coded UI testing framework that supports a custom control.

Os testes de IU codificados costumam ser usados para automatizar testes manuais.Coded UI tests are often used to automate manual tests. Para obter mais informações sobre testes manuais, consulte Run manual tests with Microsoft Test Manager (Executar testes manuais com o Microsoft Test Manager).For more information about manual tests, see Run manual tests with Microsoft Test Manager. Para obter mais informações sobre testes automatizados, confira Ferramentas de teste no Visual Studio.For more information about automated tests, see Test tools in Visual Studio.

Consulte tambémSee also