Biblioteca de pruebas de automatización de la interfaz de usuario
La biblioteca de pruebas de automatización de la interfaz de usuario (biblioteca de pruebas de UIA) es una API a la que llama la aplicación controlador de en un escenario de prueba automatizada. El controlador es la aplicación que obtiene un elemento de automatización (IUIAutomationElement objeto) de un control que requiere comprobación y lo proporciona a la biblioteca de pruebas de automatización de la interfaz de usuario. A continuación, la biblioteca de pruebas comprueba y valida la implementación de automatización de la interfaz de usuario. Para obtener más información sobre los elementos de automatización y automatización de la interfaz de usuario, consulte aspectos básicos de automatización de la interfaz de usuario.
- flujo de trabajo de la biblioteca de pruebas de automatización de la interfaz de usuario de
- registro de con la biblioteca de pruebas de automatización de la interfaz de usuario
- de registro XML de
- de registro de la consola de
- Requisitos de código de para el registro
- ejemplos de registro de
Flujo de trabajo de la biblioteca de pruebas de UI Automation
En el diagrama siguiente se muestra un flujo de trabajo de prueba que incorpora la biblioteca de pruebas de automatización de la interfaz de usuario mediante una aplicación de consola como controlador. En este caso, el controlador inicia una instancia de Notepad.exe y obtiene un elemento de automatización (es decir, un objeto IUIAutomationElement) del control de edición. A continuación, el controlador crea un objeto ui Automation Test Library basado en la plataforma de interfaz de usuario que se está probando y, a continuación, pasa el elemento de automatización como parámetro. La biblioteca de pruebas de automatización de la interfaz de usuario determina que el elemento de automatización es un tipo de control Document y, a continuación, ejecuta las pruebas de control Document, el Text y Las pruebas de patrones de control de scroll y las pruebas de elementos de automatización genéricas.
Registro con la biblioteca de pruebas de automatización de la interfaz de usuario
La biblioteca de pruebas de automatización de la interfaz de usuario usa archivos DLL externos para registrar los resultados de las ejecuciones de pruebas. Admite el registro como XML y el registro en la consola.
Registro XML
El registro XML lo suele usar Visual UI Automation Verify, pero también se puede incorporar a un flujo de trabajo de línea de comandos.
Si se especifica el registro XML, la aplicación del controlador debe serializar la salida creando un objeto XmlWriter y pasándolo al método XmlLog.GetTestRunXml. Después, el controlador puede usar el XML serializado internamente o escribirlo en un archivo.
Los archivos DLL siguientes son necesarios para el registro XML.
- WUIALogging.dll
- WUIALoggerXml.dll
Registro de consola
De forma predeterminada, la biblioteca de pruebas de automatización de la interfaz de usuario usa el registro de consola, donde toda la salida de registro se canaliza como texto sin formato a la ventana de la consola. WUIALogging.dll es necesario para el registro de la consola.
Requisitos de código para el registro
Una aplicación de controlador debe incluir los siguientes fragmentos de código para usar el registro de la biblioteca de pruebas de automatización de la interfaz de usuario.
\\ 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("...");
Ejemplos de registro
En los ejemplos siguientes se muestra la funcionalidad de registro básica y se muestra cómo usar ui Automation Test Library API en una aplicación básica de controlador de automatización de pruebas.
//---------------------------------------------------------------------------
//
// 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);
}
}
}