Автоматизация пользовательского интерфейса --- Автоматизация пользовательского интерфейса Microsoft.
Автоматизация пользовательского интерфейса --- Автоматизация пользовательского интерфейса Microsoft.

введение

Значение платформы автоматизированного тестирования состоит из трех слов: стабильность.

Будь то автоматическое тестирование интерфейса или автоматизированное тестирование пользовательского интерфейса, цель состоит в том, чтобы улучшить стабильность продукта и обеспечить удобство для пользователей.

Общие автоматизированные тесты интерфейса включают в себя Postman ,SoapUI,JMeter и т. д. В Интернете слишком много информации такого типа. В этой статье в основном обсуждается тестирование автоматизации пользовательского интерфейса. Я собрал распространенные платформы тестирования автоматизации пользовательского интерфейса:

  • 「Selenium」:SeleniumИмеет открытый исходный код и бесплатен,Очень широко используемый фреймворк для автоматизации тестирования веб-приложений.,Он поддерживает оба драйвера сценариев на нескольких языках.,Также поддерживаются методы записи и воспроизведения.
  • 「Appium」:Appiumэто бесплатное мобильное приложение с открытым исходным кодомавтоматизациятестрамка,Также поддерживаются драйверы сценариев на нескольких языках.
  • 「Katalon Studio」:Katalon Studioэто бесплатноUIавтоматизациятестинструмент,Подходит для Интернета, мобильных устройств иAPItest. Он основан на Selenium и Appium.,И предоставляет графический интерфейс и встроенную функцию тестирования.
  • 「TestComplete」:TestCompleteЭто мощный бизнесUIавтоматизациятестинструмент,Подходит для веб-приложений, настольных и мобильных приложений. Он предоставляет множество языков сценариев и графических интерфейсов.,И гибкие функции распознавания и воспроизведения объектов.
  • 「Ranorex」: Ranorexэто бизнесUIавтоматизациятестинструмент,Подходит для веб-приложений, настольных и мобильных приложений. Он обеспечивает простые в использовании функции записи и воспроизведения.,Поддерживает несколько языков программирования.

Из приведенных выше данных нетрудно обнаружить, что для автоматизации тестирования пользовательского интерфейса настольных приложений указанные выше фреймворки или инструменты либо бесплатны, но поддерживают только веб-приложения, либо являются коммерческими инструментами. Их сложно описать одним словом.

Итак, это подводит нас к нашей теме --- UIAutomation.

Введение в автоматизацию пользовательского интерфейса

Давайте посмотрим на официальное введение Microsoft в UIAutomation:

Microsoft UI Automation — это платформа специальных возможностей для Microsoft Windows. Он удовлетворяет потребности продуктов ассистивных технологий и сред автоматизированного тестирования, предоставляя программный доступ к информации пользовательского интерфейса (UI). Кроме того, автоматизация пользовательского интерфейса позволяет разработчикам средств управления и приложений сделать свои продукты доступными.

Упоминается в нем,Использование программного доступа позволяет с помощью кода эмулировать любое взаимодействие, происходящее при традиционном вводе с помощью мыши и клавиатуры.,UIAutomation Программный доступ достигается за счет пяти компонентов:

  • UI Automation tree(UIавтоматизация Дерево)
  • UI Automation elements(UIавтоматизацияэлемент)
  • UI Automation properties(UIавтоматизациясвойство)
  • Шаблоны управления
  • UI Automation события (UIautomationсобытие)

Как показано ниже:

Наконец, перечислены шаги по реализации автоматизации пользовательского интерфейса в тестовом приложении:

Знакомство со вспомогательными инструментами

Инструмент упоминается в шагах --- 「Inspect.exe」 , инструмент представляет собой графический интерфейс пользователя (GUI) Приложение, которое можно использовать для сбора информации для разработки и отладки поставщика и клиента. UI Информация по автоматизации, которая содержится в Windows SDK середина.

Итак, чтобы использовать「Inspect.exe」Перейти к управлению запросами AutomationIdProperty,Должен быть установлен Windows SDK.

Затем вы можете использовать Everything для прямого поиска Inspect.exe. Вы можете видеть, что в каталоге установки SDK их четыре: x64, x86, Arm64 и Arm. Обычно мы выбираем x64.

Затем используйте этот инструмент, чтобы найти элементы управления целевого приложения.,и на основеAutomationProperties Код для имитации кликов.

Проверьте свои навыки

Затем напишите код для его проверки:

  1. Создайте целевую программу, программу WPF, поместите поле ввода TextBox и назовите его. textbox1,Поместите еще одну кнопку,названный button1,button1Всплывающее окно после нажатия“UIAutomationкнопкатест”。
  2. Далее создайте тестовую программу,Создать консольную программу,использовать UIAutomation API осуществлятьсуществовать Нажмитеbutton1существовать textbox1Ввод текстового поля"UIAutomationкнопкатест"суффикс времени。
  3. использовать「Inspect.exe」Найдите процесс целевой программыIDиконтрольAutomationID。ввод втест В процессе,Посмотрите на результаты выполнения.

Код программы тестовой консоли следующий:

Язык кода:javascript
копировать
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 обеспечивает поддержку сценариев.
  • исполнительный отчетибревносуществовать ИнкапсуляцияUI Automation Вы можете добавить его в процессе API.
  • Тестирование, управляемое данными, можно выполнять с помощью сценариев.
  • Последний пункт,Непрерывную интеграцию и непрерывную доставку можно передать Jenkins.

Это то, о чем я говорил в начале статьи,Автоматизациятестирование пользовательского интерфейса для десктопных приложений,Существующие платформы или инструменты либо бесплатны, но поддерживают только веб-приложения.,Либо это коммерческий инструмент,Поэтому я хочу сделать его сам,У меня есть все идеи и планы,Что касается того, что можно сделать,Давайте подождем и посмотрим.

Если вы не знакомы с платформой компилятора Roslyn, можете прочитать две мои предыдущие статьи.

❝Справочные ссылки Использование автоматизации пользовательского интерфейса для автоматического тестирования: https://learn.microsoft.com/en-us/dotnet/framework/ui-automation/using-ui-automation-for-automated-testing ❞

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.