Biblioteca de Testes do Automação da Interface do Usuário
A Biblioteca de Testes do Automação da Interface do Usuário (Biblioteca de Testes do UIA) é uma API chamada pelo aplicativo driver em um cenário de teste automatizado. O driver é o aplicativo que obtém um elemento de automação (objeto IUIAutomationElement) de um controle que requer verificação e o fornece à Biblioteca de Testes do Automação da Interface do Usuário. Em seguida, a biblioteca de teste verifica e valida a implementação do Automação da Interface do Usuário. Para saber mais sobre Automação da Interface do Usuário e elementos de automação, consulte Conceitos básicos Automação da Interface do Usuário.
- fluxo de trabalho da biblioteca de teste do Automação da Interface do Usuário
- Registro em log com a biblioteca de teste de Automação da Interface do Usuário
fluxo de trabalho da biblioteca de teste do Automação da Interface do Usuário
O diagrama a seguir mostra um fluxo de trabalho de teste que incorpora a Biblioteca de Testes Automação da Interface do Usuário usando um aplicativo de console como o driver. Nesse caso, o driver inicia uma instância de Notepad.exe e obtém um elemento de automação (ou seja, um objeto IUIAutomationElement ) do controle de edição. Em seguida, o driver cria um objeto Automação da Interface do Usuário Test Library com base na plataforma de interface do usuário que está sendo testada e, em seguida, passa o elemento de automação como um parâmetro. A Biblioteca de Testes do Automação da Interface do Usuário determina que o elemento de automação é um tipo de controle Document e, em seguida, executa os testes de controle Document, os testes de padrão de controle Texto e Rolagem e testes de elementos de automação genéricos.
Registro em log com a biblioteca de teste de Automação da Interface do Usuário
A Biblioteca de Testes Automação da Interface do Usuário usa DLLs externas para registrar resultados de execuções de teste. Ele dá suporte ao registro em log como XML e ao registro em log no console.
Registro em log XML
O registro em log XML normalmente é usado pelo Visual Automação da Interface do Usuário Verify, mas também pode ser incorporado em um fluxo de trabalho de linha de comando.
Se o registro em log XML for especificado, o aplicativo de driver deverá serializar a saída criando um objeto XmlWriter e passando-o para o método XmlLog.GetTestRunXml . Em seguida, o driver pode usar o XML serializado internamente ou gravá-lo em um arquivo.
As DLLs a seguir são necessárias para registro em log XML.
- WUIALogging.dll
- WUIALoggerXml.dll
Registro em log do console
Por padrão, a Biblioteca de Testes do Automação da Interface do Usuário usa o log do console, em que toda a saída de registro em log é canalizada como texto sem formatação para a janela do console. WUIALogging.dll é necessário para o registro em log do console.
Requisitos de código para registro em log
Um aplicativo de driver deve incluir os snippets de código a seguir para usar Automação da Interface do Usuário log da Biblioteca de Testes.
\\ Include logging functionality.
using Microsoft.Test.UIAutomation.Logging;
...
\\ Select a logger.
UIAVerifyLogger.SetLoggerType(LogTypes.DefaultLogger |
LogTypes.ConsoleLogger |
LogTypes.XmlLogger);
...
\\ Output comment to selected logger.
UIAVerifyLogger.LogComment("...");
Exemplos de registro em log
Os exemplos a seguir demonstram a funcionalidade básica de registro em log e mostram como usar a API da Biblioteca de Testes Automação da Interface do Usuário em um aplicativo de driver de automação de teste básico.
//---------------------------------------------------------------------------
//
// Description: Sample logger.
//
//---------------------------------------------------------------------------
using System;
namespace WUITest
{
using Microsoft.Test.UIAutomation.Logging;
public sealed class TestMain
{
private TestMain() { }
/// -----------------------------------------------------------------
/// <summary>
/// Entry point
/// </summary>
/// -----------------------------------------------------------------
[STAThread]
static void Main(string[] args)
{
// Call SetLogger() if you don't want to use the default logger.
// To set the logger type, call SetLogger(<string>).
// <string> can be specified from the command line or from the
// the UI Automation Test Library enumeration:
//
// Logger.SetLogger(LogTypes.ConsoleLogger);
// Logger.SetLogger(LogTypes.DefaultLogger);
Logger.SetLogger(LogTypes.DefaultLogger);
Logger.StartTest("Test 1");
Logger.LogComment("This is a comment");
Logger.LogError(new Exception("My error"), false);
Logger.EndTest();
Logger.StartTest("Test 2");
Logger.LogComment("This is a second comment");
Logger.LogPass();
Logger.EndTest();
Logger.ReportResults();
}
}
}
//---------------------------------------------------------------------------
//
// Description: Sample test automation.
//
//---------------------------------------------------------------------------
using System;
using System.Windows;
namespace WUITest
{
using System.Diagnostics;
using System.Threading;
using System.Windows.Automation;
using Microsoft.Test.UIAutomation;
using Microsoft.Test.UIAutomation.Core;
using Microsoft.Test.UIAutomation.TestManager;
using Microsoft.Test.UIAutomation.Tests.Controls;
using Microsoft.Test.UIAutomation.Tests.Patterns;
using Microsoft.Test.UIAutomation.Tests.Scenarios;
using Microsoft.Test.UIAutomation.Logging;
public sealed class TestMain
{
// Time in milliseconds to wait for the application to start.
static int MAXTIME = 5000;
// Time in milliseconds to wait before trying to find the application.
static int TIMEWAIT = 100;
/// -------------------------------------------------------------------
/// <summary>
/// Start Notepad, obtain an AutomationElement object, and run tests.
/// </summary>
/// -------------------------------------------------------------------
[STAThread]
static void Main(string[] args)
{
// Dump the information to the console window.
// Use a different LogTypes value if you need to dump to another logger,
// or create your own logger that complies with the interface.
UIAVerifyLogger.SetLoggerType(LogTypes.ConsoleLogger);
// Get the automation element.
AutomationElement element = StartApplication("NOTEPAD.EXE", null);
// Call the UI Automation Test Library tests.
TestRuns.RunAllTests(element, true, TestPriorities.Pri0,
TestCaseType.Generic, false, true, null);
// Clean up.
((WindowPattern)element.GetCurrentPattern(WindowPattern.Pattern)).Close();
// Dump the summary of results.
UIAVerifyLogger.ReportResults();
}
/// -------------------------------------------------------------------------
/// <summary>
/// Start the application and retrieve its AutomationElement.
/// </summary>
/// -------------------------------------------------------------------------
static public AutomationElement StartApplication(string appPath,
string arguments)
{
Process process;
Library.ValidateArgumentNonNull(appPath, "appPath");
ProcessStartInfo psi = new ProcessStartInfo();
process = new Process();
psi.FileName = appPath;
if (arguments != null)
{
psi.Arguments = arguments;
}
UIAVerifyLogger.LogComment("Starting({0})", appPath);
process.StartInfo = psi;
process.Start();
int runningTime = 0;
while (process.MainWindowHandle.Equals(IntPtr.Zero))
{
if (runningTime > MAXTIME)
throw new Exception("Could not find " + appPath);
Thread.Sleep(TIMEWAIT);
runningTime += TIMEWAIT;
process.Refresh();
}
UIAVerifyLogger.LogComment("{0} started", appPath);
UIAVerifyLogger.LogComment("Obtained an AutomationElement for {0}", appPath);
return AutomationElement.FromHandle(process.MainWindowHandle);
}
}
}