Обучение Урок 4 из 12

Windows-приложение

Цель
Автоматизировать окно программы Windows — запуск, ввод, нажатие, чтение результата — и научиться указывать элементы пикером
Время
25 минут

Файлы примеров

Что понадобится #

  • Студия Tulpar. В её папке есть учебная программа samples\testapp\Tulpar.TestApp.exe („Tulpar Test App“): поле „Имя“, кнопка „Отправить“, список городов, флажок и кнопки с задержкой и диалогом.
  • Файл примера 02_testapp.flow.json — он же лежит в папке студии: samples\flows\02_testapp.flow.json.
  • Незаблокированный экран: робот работает с окнами так же, как человек, — мышью и клавиатурой.

Процесс запускает программу по пути ../testapp/Tulpar.TestApp.exe относительно своей папки. Скачанный файл положите в samples\flows папки студии (рядом с готовой копией) или откройте копию оттуда.

Шаг 1. Посмотрите на программу #

Запустите Tulpar.TestApp.exe, впишите имя и нажмите „Отправить“ — под полем появится Привет, <имя>!. Это и проверяет процесс. Закройте программу.

Шаг 2. Откройте процесс #

В студии нажмите «Открыть» и выберите 02_testapp.flow.json:

  1. app.start запускает программу;
  2. ui.waitElement „Дождаться окна“ ждёт окно Tulpar Test App до 10 секунд;
  3. ui.typeInto вводит в поле имя из аргумента userName;
  4. ui.click нажимает кнопку „Отправить“;
  5. ui.getText читает ответ в переменную result;
  6. control.if сравнивает его с ожидаемым текстом, app.close закрывает программу.
Процесс с окном Windows: шаги и свойства шага ввода
Процесс с окном Windows: шаги и свойства шага ввода

Шаг 3. Селектор: как робот находит элемент #

Выберите шаг ввода текста. В «Свойства» — селектор элемента: путь от окна программы к полю. Нажмите «Изменить», чтобы увидеть его целиком:

{
  "kind": "uia",
  "path": [
    { "processName": "Tulpar.TestApp", "controlType": "Window", "name": "Tulpar Test App" },
    { "controlType": "Edit", "automationId": "txtName" }
  ]
}

Первый сегмент — окно программы, второй — поле с automationId txtName. automationId разработчики программ задают сами, и он не меняется при переводе интерфейса, поэтому селектор по нему надёжнее, чем по подписи.

Окно «Селектор (JSON)»: путь от окна к полю ввода
Окно «Селектор (JSON)»: путь от окна к полю ввода

Шаг 4. Укажите элемент мышью #

Добавим выбор города:

  1. Запустите Tulpar.TestApp.exe.
  2. Перетащите в процесс после шага ввода действие ui.selectItem.
  3. В свойствах шага нажмите «Указать на экране», наведите курсор на список „Город“ в программе и нажмите Ctrl. Esc — отмена.
  4. Нажмите «Подсветить» — найденный элемент обведётся красной рамкой. В поле пункта напишите Ош.
  5. Так же добавьте ui.setChecked для флажка „Согласен“ и включите у шага флажок „Включён“.

Шаг 5. Запуск #

Закройте программу, если она открыта, и нажмите «Запуск» (F5). Во время запуска не двигайте мышь и не переключайте окна.

Ожидание окна программы: селектор окна и таймаут
Ожидание окна программы: селектор окна и таймаут

Что должно получиться #

  • Программа открылась, в поле появилось имя Арген (значение аргумента по умолчанию), город и флажок выбраны, программа закрылась.
  • В «Лог» — Проверка пройдена: Привет, Арген! и итог „Завершено успешно за …“.
  • Запустите ещё раз с другим именем в окне аргументов — в логе будет приветствие с ним.

Если не получилось #

Что видно Что сделать
„приложение не запустилось“ Проверьте путь в свойствах шага app.start: ../testapp/Tulpar.TestApp.exe считается от папки процесса. Можно указать полный путь кнопкой «Обзор».
„элемент не найден“ Окно ещё не открылось или подпись другая. Нажмите «Подсветить»: если рамки нет — укажите элемент заново («Указать на экране»).
„истекло время ожидания“ на шаге окна Программа открылась за другим окном или долго стартует — увеличьте таймаут в разделе дополнительных свойств шага.
Текст вводится не туда Не трогайте мышь и клавиатуру во время запуска; у фонового робота экран не должен быть заблокирован.

Дальше — урок Ошибки и повторы: что делать, когда шаг падает.