Значение платформы автоматизированного тестирования состоит из трех слов: стабильность.
Будь то автоматическое тестирование интерфейса или автоматизированное тестирование пользовательского интерфейса, цель состоит в том, чтобы улучшить стабильность продукта и обеспечить удобство для пользователей.
Общие автоматизированные тесты интерфейса включают в себя Postman
,SoapUI
,JMeter
и т. д. В Интернете слишком много информации такого типа. В этой статье в основном обсуждается тестирование автоматизации пользовательского интерфейса. Я собрал распространенные платформы тестирования автоматизации пользовательского интерфейса:
Из приведенных выше данных нетрудно обнаружить, что для автоматизации тестирования пользовательского интерфейса настольных приложений указанные выше фреймворки или инструменты либо бесплатны, но поддерживают только веб-приложения, либо являются коммерческими инструментами. Их сложно описать одним словом.
Итак, это подводит нас к нашей теме --- UIAutomation.
Давайте посмотрим на официальное введение Microsoft в UIAutomation:
Microsoft UI Automation — это платформа специальных возможностей для Microsoft Windows. Он удовлетворяет потребности продуктов ассистивных технологий и сред автоматизированного тестирования, предоставляя программный доступ к информации пользовательского интерфейса (UI). Кроме того, автоматизация пользовательского интерфейса позволяет разработчикам средств управления и приложений сделать свои продукты доступными.
Упоминается в нем,Использование программного доступа позволяет с помощью кода эмулировать любое взаимодействие, происходящее при традиционном вводе с помощью мыши и клавиатуры.,UIAutomation
Программный доступ достигается за счет пяти компонентов:
Как показано ниже:
Наконец, перечислены шаги по реализации автоматизации пользовательского интерфейса в тестовом приложении:
Инструмент упоминается в шагах --- 「Inspect.exe」 , инструмент представляет собой графический интерфейс пользователя (GUI) Приложение, которое можно использовать для сбора информации для разработки и отладки поставщика и клиента. UI Информация по автоматизации, которая содержится в Windows SDK середина.
Итак, чтобы использовать「Inspect.exe」Перейти к управлению запросами AutomationIdProperty
,Должен быть установлен Windows SDK.
Затем вы можете использовать Everything для прямого поиска Inspect.exe. Вы можете видеть, что в каталоге установки SDK их четыре: x64, x86, Arm64 и Arm. Обычно мы выбираем x64.
Затем используйте этот инструмент, чтобы найти элементы управления целевого приложения.,и на основеAutomationProperties
Код для имитации кликов.
Затем напишите код для его проверки:
textbox1
,Поместите еще одну кнопку,названный button1
,button1
Всплывающее окно после нажатия“UIAutomationкнопкатест”。UIAutomation API
осуществлятьсуществовать Нажмитеbutton1
существовать textbox1
Ввод текстового поля"UIAutomationкнопкатест"суффикс времени。AutomationID
。ввод втест В процессе,Посмотрите на результаты выполнения.Код программы тестовой консоли следующий:
using System;
using System.Diagnostics;
using System.Windows.Automation;
public class ProcessButtonClickAutomation
{
public static void Main()
{
Console.WriteLine("Введите идентификатор целевого процесса:");
var targetProcessId = Console.ReadLine();
Console.WriteLine("Введите AutomationId целевого элемента управления:");
var automationId = Console.ReadLine();
// Найдите процесс по его идентификатору процесса
Process targetProcess = FindProcessById(int.Parse(targetProcessId));
if (targetProcess != null)
{
// Найдите дескриптор главного окна процесса
IntPtr mainWindowHandle = targetProcess.MainWindowHandle;
if (mainWindowHandle != IntPtr.Zero)
{
// Получите AutomationElement, используя дескриптор главного окна.
AutomationElement mainWindowElement = AutomationElement.FromHandle(mainWindowHandle);
// Найдите элемент кнопки и при необходимости измените условия поиска кнопки.
PropertyCondition condition = new PropertyCondition(AutomationElement.AutomationIdProperty, automationId);
AutomationElement buttonElement = mainWindowElement.FindFirst(TreeScope.Descendants, condition);
if (buttonElement != null)
{
// Получите InvokePattern элемента кнопки.
InvokePattern invokePattern = buttonElement.GetCurrentPattern(InvokePattern.Pattern) as InvokePattern;
if (invokePattern != null)
{
// Имитировать операцию нажатия кнопки
invokePattern.Invoke();
Console.WriteLine("Кнопка была нажата " + DateTime.Now);
}
else
{
Console.WriteLine("Кнопка недоступна");
}
}
else
{
Console.WriteLine("Элемент кнопки не найден");
}
}
else
{
Console.WriteLine("Невозможно найти главное окно процесса");
}
}
else
{
Console.WriteLine("Невозможно найти указанный процесс");
}
Console.WriteLine("Выполнение завершено~");
Console.ReadLine();
}
// Найдите процесс по его идентификатору процесса
public static Process FindProcessById(int processId)
{
try
{
Process process = Process.GetProcessById(processId);
return process;
}
catch (ArgumentException)
{
return null;
}
}
}
использовать「Inspect.exe」Цель можно увидетьWPFпроцедурный ProcessID = 24984
, кнопка управления AutomationId = button1
Введите в консоль ProcessID
и AutomationId
Вы можете видеть, что после завершения выполнения программы проверки результатов текстовое поле целевой программы WPF одновременно обновляется.
Говорят, что автоматизация пользовательского интерфейса — это фреймворк.,Я думаю, это больше похоже на набор API,Он просто предоставляет вам базовые возможности для автоматизации тестирования.,Если вы хотите создать платформу автоматического тестирования пользовательского интерфейса для настольных приложений.,Еще многое предстоит сделать. Например, если вам нужно реализовать поддержку скриптов,Необходимо реализовать отчет о выполнении и журнал,Необходимо внедрить тест, управляемый данными.,Ему даже необходимо поддерживать автоматическое выполнение теста автоматизации пользовательского интерфейса в процессе непрерывной интеграции и непрерывной доставки (CI/CD).
Теперь я хочу создать платформу тестирования автоматизации пользовательского интерфейса для настольных приложений на основе автоматизации пользовательского интерфейса. У меня есть только общая идея:
Это то, о чем я говорил в начале статьи,Автоматизациятестирование пользовательского интерфейса для десктопных приложений,Существующие платформы или инструменты либо бесплатны, но поддерживают только веб-приложения.,Либо это коммерческий инструмент,Поэтому я хочу сделать его сам,У меня есть все идеи и планы,Что касается того, что можно сделать,Давайте подождем и посмотрим.
Если вы не знакомы с платформой компилятора Roslyn, можете прочитать две мои предыдущие статьи.
❝Справочные ссылки Использование автоматизации пользовательского интерфейса для автоматического тестирования: https://learn.microsoft.com/en-us/dotnet/framework/ui-automation/using-ui-automation-for-automated-testing ❞