Запуск роботов в разных режимах, горячие клавиши, ограничения

Запуск робота из робота

Для решения некоторых задач требуется запуск одного робота в ходе работы другого робота. Шаги по выполнению данного процесса описаны ниже:

  1. Экспортировать готового робота, которого необходимо запустить с помощью другого робота (расширение «.robin-robot»):

  2. В схеме робота, из которого будет запущен другой робот, выбрать действие «Запустить процесс» из группы действий «Процессы».

  3. В параметрах действия в строке «Задать процесс» выбрать «По пути к файлу» из выпадающего списка. В строке файл процесса указать путь к экспортированному ранее готовому роботу.

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

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

Пример 1. Неуспешный запуск

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

Задача: запустить робота с 2 шага в роботе, который устанавливает закладку в документе.

Реализация:

  • Щелкнуть правой кнопкой мыши по действию «Установить закладку» и нажать на кнопку «Начать отсюда».

  • Запуск робота невозможен, так как отсутствует информация о предыдущих запусках.

При нажатии кнопки «Начать отсюда» на действии, будет выполнена попытка запуска сценария с указанного действия. Запуск действия возможен, если ранее были получены и сохранены результаты предыдущих запусков сценария. Сохранить результаты предыдущих запусков можно, установив флажок «Сохранять результаты» в панели отладки.

Пример 2. Успешный запуск

Задача: существует робот, который выводит сообщения в диалоговые окна. Необходимо начать выполнения робота с 2 шага.

Релизация:

  • Щелкнуть правой кнопкой мыши по действию «Сообщение 2» и нажать на кнопку «Начать отсюда».

  • Выполнение робота начнется с указанного действия.

Передача параметров между роботами

При запуске одного Программного робота из другого робота иногда требуется передача некоторых параметров.

Подготовка запускающего робота для передачи параметров

В роботе, который передает параметр, необходимо использовать действие «Запустить процесс».

В разделе «Свойства» (блок «Параметры») необходимо заполнить поля:

  • Задать - выбрать значение «Имя» или «Путь к файлу» (какое приложение запускаем);

  • Файл процесса (производится запуск плеера)

  • Аргументы - шаблон аргумента: -r «путь до готового робота» -p «путь до файла с параметрами»

Шаблон файла с параметрами:

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

Далее, необходимо указать тип переменной. В данном случае указана переменная «Строка» (RobinString).

Ниже перечислен формат записи для указания типа передаваемого значения:

  • RobinBoolean - Логическая переменная
  • RobinCollection - переменная типа Коллекция
  • RobinDataTable - переменная типа Таблица
  • RobinDateTime - переменная типа Время/Дата
  • RobinDictionary - переменная типа Словарь
  • RobinFilePath - переменная типа Путь к файлу
  • RobinFolderPath - переменная типа Путь к папке
  • RobinHotKeys - переменная типа Горячие клавиши
  • RobinString - переменная типа Строка
  • RobinPassword - переменная типа Пароль
  • RobinNumeric - переменная типа Число
  • RobinLocationPoint - переменная типа Координаты точки
  • RobinObject - переменная типа Объект
  • RobinRectangleLocation - переменная типа Область

При передаче сразу нескольких значений небходимо добавить эти значения строкой ниже.

Подготовка запускаемого робота

Необходимо зайти во второго робота (которому нужно передать пераметры) и создать те переменные, которые ранее были указаны в xml-файле.

Укажите в переменной значение «Входной параметр робота». Запустите робота.

Запуск робота с параметром

Для решения некоторых задач требуется передача каких-либо параметров роботу. Решить данную задачу можно посредством запуска робота из робота, запуском робота с помощью приложения ROBIN Robot Player и с помощью командной строки.

Запуск робота из робота с передачей параметров

  1. В роботе, в которого будет передан параметр, необходимо создать переменную, в которую будет записан параметр и выбрать опцию «Входной параметр робота»:

  2. Экспортировать готового робота, которого необходимо запустить с помощью другого робота (расширение «.robin-robot»):

  3. В схеме робота, из которого будет запущен другой робот, выбрать действие «Запустить процесс» из группы действий «Процессы».

  4. В параметрах действия в строке «Задать процесс» выбрать «По пути к файлу» из выпадающего списка.

  5. В строке «файл процесса» указать путь до приложения ROBIN Robot Player (%USERPROFILE%/AppData/Local/Programs/RobinPlatform/2.0.0/RobotPlayer/RobotPlayer.exe).

  6. В поле «Аргументы» указать строку следующего формата: -r «путь до готового робота» -p «путь до файла с параметрами».

Параметры передаются посредством xml-файла. Такой xml-файл может иметь любое название, но порядок и название его элементов должны быть неизменны. Пользователь изменяет значения только в строке с элементом InOutResource:

  • значение атрибута «name» – это название переменной, в которую передаем параметр. Эта переменная должна быть создана именно в том роботе, которому передаем параметр. Робот, который передает параметр, может и не иметь такой переменной;
  • в значении элемента InOutResource необходимо указать тип переменной, в которую будет записан передаваемый параметр, и передаваемое значение, т.е. сам параметр;
  • если роботу требуется передать несколько параметров, нужно скопировать элемент InOutResource необходимое количество раз и записать в него значения параметров.

Структура xml-файла

Запуск робота посредством командной строки

  1. Экспортировать готового робота, которому будут переданы параметры (расширение «.robin-robot»).

  2. Подготовить xml-файл с параметрами, которые будут переданы роботу.

  3. Открыть командную строку, нажав комбинацию клавиш Win+R и в появившемся окне ввести cmd, после чего нажать Enter (также командную строку можно открыть, введя в поиске windows cmd.exe).

  4. В командной строке ввести следующее:

«%USERPROFILE%/AppData/Local/Programs/RobinPlatform/2.0.0/RobotPlayer/RobotPlayer.exe» -r «путь до готового робота» -p «путь до файла с параметрами».

После этого начнется выполнение программного робота. В приложение ROBIN Robot Player на вкладке «Запущенные» появится информация о выполнении запускаемого робота:

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

Когда необходим перевод машины в консольный режим

Есть несколько типов задач, которые программные роботы могут выполнить только при наличии активной графической сессии (т.е. не в фоновом режиме):

  • Создание скриншота экрана
  • Выполнение действий из группы «Имитация устройств»
  • Выполнение некоторых действий их группы «Машинное зрение»: «Ждать исчезновения», «Ждать появления», «Существует на экране»
  • Выполнение действий из подгруппы «Работа с win-элементами»

Если роботов запускают на машинах исполнения удаленно через приложение ROBIN Management Console (RMC), то проблем с выполнением таких задач не возникнет, т.к. там будет поднята графическая RDP-сессия. Однако если по каким-либо причинам запуск роботов планируется осуществлять вне RMC (вручную или по локальному расписанию) на удаленной машине, а окно с RDP-соединением пользователь не планирует оставлять в открытом виде, необходимо перевести текущую RDP-сессию в режиме console (консольный режим).

В консольном режиме графическая сессия остается активной, но при этом RDP-соединение закрыто и не мешает пользователю.

Способы перевода машины в консольный режим

Вручную

  1. Запустить робота на удаленной машине. Если запуск предполагается производить по расписанию, настроенному на этой машине, то этот шаг можно пропустить.

  2. Открыть cmd и выполнить команду query session. Необходим номер сессии (ID) у текущего пользователя:

Этот номер меняется при каждом новом подключении к машине, поэтому запоминать его для постоянного использования не имеет смысла.

  1. Выполнить команду tscon.exe <ID> /dest:console

  2. Результат: открытая сессия переведется в консольный режим, подключение к удаленному столу закрывается, а робот остается работать или будет запущен по расписанию в нужное время.

Подробнее: https://support.smartbear.com/testcomplete/docs/testing-with/running/via-rdp/keeping-computer-unlocked.html

При помощи робота

Выполнять самостоятельно все команды, которые описаны в первом способе, необязательно. Их точно также может выполнить и сам робот. Просто необходимо добавить в начало целевого алгоритма действия по исполнению этих команд через cmd. Но перед запуском робота нужно перезапустить ROBIN Agent от имени администратора. Закрывать RDP-соединение самостоятельно не надо, необходимо дождаться, пока это сделает сам робот.

При помощи bat-файла

Чтобы каждый раз не открывать cmd и не вводить команды вручную, можно просто запускать заранее созданный bat-файл, в котором уже указаны необходимые команды. Запуск файл стоит производить также от имени администратора и только после выполнения шага №1 из первого способа. ID сессии менять в файле не надо, его определение происходит автоматически. Этот же bat-файл может запускать и сам робот, при помощи действия «Исполнить скрипт» (пример заполнения действия в схеме, приложенной выше). Но перед запуском робота нужно перезапустить ROBIN Agent от имени администратора. Закрывать RDP-соединение самостоятельно не надо, необходимо дождаться, пока это сделает сам робот.

Ограничения при использовании консольного режима

При запуске и работе роботов в консольном режиме нужно учитывать также несколько особенностей:

  1. Чаще всего исполнение команды по переводу машины в консольный режим должно происходить от имени администратора (в редких случаях необходимая учетная запись уже может обладать необходимым уровнем прав).
  2. В политиках удаленной машины должна быть отключена автоматическая блокировка экрана и переход в спящий режим при бездействии. Это требование должно быть выполнено, если время бездействия робота (например, между его запусками по расписанию) превышает установленный лимит бездействия, после которого учетная запись блокируется или переводится в спящий режим. Дело в том, что при заблокированной учетной записи, робот сможет запуститься, но корректно исполнит только те действия, которые выполняются в фоновом режиме. Самостоятельно же разблокировать учетную запись робот не сможет.
  3. Необходимо, чтобы в консольном режиме разрешение экрана оставалось таким же, какое оно было при активной RDP-сессии, когда аналитик производил создание исходника робота (не влияет только при исполнении действия по созданию скриншота). Это правило должно всегда соблюдаться. Если разрешение при переходе в консольный режим все же меняется, можно попробовать немного модифицировать команду:

tscon.exe <ID> /dest:console & <Путь до QRes.exe> /x:<Значение по X> /y:<Значение по Y>, где первая команда - это переход в консольную сессию, вторая - установка разрешения при помощи специализированной утилиты. Исходники утилиты здесь: https://sourceforge.net/projects/qres/

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

Такая проблема, например, существует в виртуальных средах VMware. Предлагаемое решение описано по ссылке: VM Console Display Resolution Change - vGemba.net: https://www.vgemba.net/vmware/powercli/VMConsole-Resolution-Change/

Для решеия проблемы необходимо:

а) войти на необходимую машину через консоль управления и поменять на машине разрешение на необходимое:

б) прописать в настройках виртуальной машины (через консоль управления) следующие параметры:

guestInfo.svga.wddm.modeset=”FALSE”

guestInfo.svga.wddm.modesetCCD=”FALSE”

guestInfo.svga.wddm.modesetLegacySingle=”FALSE”

guestInfo.svga.wddm.modesetLegacyMulti=”FALSE”

В таком режиме манипуляции с размером консоли VMware не влияют на разрешение, которое будет на машине в консольном режиме при работе робота.

Корректная работа при свернутом rdp соединении

  • На клиенте вносим изменения в реестр (RemoteDesktop.reg).
  • Этот параметр запрещает rdp клиенту блокировать удаленный компьютер, если пользователь сворачивает окно rdp клиента.
  • После внесения изменений в реестр, можно будет сворачивать окно с удаленной машиной (где находится робот) и робот будет корректно отрабатывать.

Принудительная остановка робота

Необходимость в принудительном завершении работы робота возникает в связи с тем, что алгоритм на этом шаге продолжаться не должен. Остановить робота можно следующими способами:

  1. Остановка робота в приложении ROBIN Studio посредством нажатия кнопки «Стоп».

Во время отладки робота, когда запущено его выполнение в Студии, в тот момент, когда необходимо прервать работу робота, нажмите на кнопку «Стоп». Она находится на верхней панели (во время работы сценария панель окрашена в зеленый цвет). После ее нажатия робот прекратит выполнения алгоритма без ошибок. Аналогично, робот остановится по нажатию на кнопку «Мягкий стоп» или «Жесткий стоп» во время выполнения робота.

  1. Остановкка робота в приложении ROBIN Player посредством нажатия кнопки «Стоп».

Во время исполнения готового робота в ROBIN Robot Player его также можно остановить. Для этого:

  • Открыть приложение ROBIN Player;

  • Выбрать робот, исполнение которого необходимо остановить, на вкладке «Запущенные», справа доступны кнопки «Пауза» и «Стоп»;

  • Нажмите на кнопку «Стоп» для принудительной остановки работы робота.

При нажатии на эту кнопку робот завершит свою работу без ошибки.

  1. С помощью действия студии «Вывести ошибку».
  • Из группы действий «Базовые действия» выбрать действие «Вывести ошибку» и перенести его в схему робота.

  • В параметрах действия в строке «Сообщения» указать текст ошибки, который будет выведен в лог. Если оставить это поле пустым, то в логе будет выведена «Неизвестная ошибка».

  • После настройки действия запустить робота нажатием кнопки запуска.

  • Когда робот дойдет до действия «Вывести ошибку», в логе в студии появится запись об ошибке и робот завершит работу.

Оповещение пользователя о возникновении ошибки робота

При работе робота могут возникнуть какие-либо ошибки, в результате которых выполнение сценария завершиться. Существует несколько способов оповещения пользователя о возникновении ошибки, рассмотрим их подробнее.

Обработка ошибок внутри сценария

  1. Обработка ошибки с помощью Try-Catch

При возникновении ошибок среди действий, помещенных в блок «Try» в лог будет выведено сообщение. Работа робота не прекратиться, а будут выполнены либо действия из блоков «Сatch» или «Finally», либо робот продолжит выполнение сценария вне действия «Try-Catch».

  1. Обработка ошибки с действием «Вывести ошибку»
  1. Из группы действий «Базовые действия» выбрать действие «Вывести ошибку» и перенести его в схему робота;

  2. В параметрах действия в строке «Сообщения» указать текст ошибки, который будет выведен в лог. Если оставить это поле пустым, то в логе будет выведена «Неизвестная ошибка»;

  3. После настройки действия запустить робота нажатием кнопки запуска;

  4. Когда робот дойдет до действия «Вывести ошибку», в логе в студии появится запись об ошибке и робот завершит свою работу;

  1. Обработка ошибки действием Информационное сообщение

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

Пример: Установить в «Сatch» данное действие, тогда перед тем, как робот перейдет к обработке ошибки, на экране появится информационное сообщение.

  1. Отправка письма на почту пользователя в случае возникновения ошибки.

Сценарий робота можно организовать таким образом, что в случае возникновении ошибки пользователю будет направлено письмо на электронный почтовый сервис. Отправка письма осуществляется посредством действий из группы действий «Почта».

  1. Выбрать действие «Настройка подключения»:

  2. Заполнить параметры действия, пример:

  3. Выбрать действие «Отправить сообщение»:

  4. Заполнить параметры действия, в поле «Тело письма» указать необходимую информацию. Пример заполнения:

Настройка оповещения пользователя о возникновении ошибки в Robin Player.

Компонент Robin Player позволяет настраивать отправку сообщений на почту в случае корректного или некорректного завершения работы робота. Для того, чтобы настроить информирование пользователя в случае, если робот завершил свою работу с ошибкой, необходимо выполнить следующие действия:

  1. Перейти на вкладку «Настройки» в Robin Player:

  2. Перейти на вкладку «Отправка писем при завершении выполнения»:

  3. Заполнить требуемые параметры:

  4. Заполнить «Список получателей уведомлений о выполнении роботов», в поле «Неуспешные выполнения» указать почтовый адрес пользователя, которому будет направлено уведомление. При выборе опции «Прикрепить лог», пользователь получит лог работы робота.

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

Комбинации горячих клавиш

Горячие клавиши Действие Использование
Ctrl + N Создать новый проект Для создания нового проекта нажмите Ctrl + N. Студия запросит решение о сохранению открытой схемы. После будет открыто окно выбора проектов, в котором можно будет создать новый проект и начать работу с ним.
Ctrl + S Сохранить открытую схему Для сохранения текущей схемы нажмите Ctrl + S
Ctrl + O Опубликовать схему в хранилище Для публикации текущей схемы нажмите Ctrl + O
Ctrl + Shift + O Публикация готового робота Для публикации готового робота нажмите Ctrl + Shift + O
Ctrl + Shift + E Экспорт готового робота Для экспорта готового робота нажмите Ctrl + Shift + E
ЛКМ Переместить действие на схеме Для того чтобы переместить действие (или выделенную группу действий) в другую часть схемы, необходимо выделить действие кликом ЛКМ и сохраняя нажатие переместить его в нужную часть схемы. Группа действий на новом месте воссоздаст порядок, с которым действия были выделены.
Ctrl + клик ЛКМ Выделить несколько действий схемы Дли того, чтобы выделить несколько действий необходимо зажать Ctrl и выполнить клик ЛКМ по нужным действиям.
Shift + клик ЛКМ Выделить отрезок схемы Дли того, чтобы выделить отрезок схемы на рабочей области, необходимо зажать Shift и выполнить клик ЛКМ по первому и последнему действию нужного отрезка.
Ctrl + А Выделить все действия на схеме Для выделения всех действий на рабочей области необходимо нажать Ctrl + А
Ctrl + С Копировать в буфер Для копирования в буфер ранее выделенного действия или группы действий необходимо нажать Ctrl + C
Ctrl + V Вставить из буфера Для вставки из буфера скопированного ранее действия или группы действий необходимо нажать Ctrl + V. Действия будут добавлены после выделенного действия, если такое есть на схеме, или в ее конец, если выделенных действий нет.
Ctrl + X Вырезать из схемы Для вырезания ранее выделенного действия или группы действий необходимо нажать Ctrl + Х
Delete Удалить из схемы Для удаления ранее выделенного действия или группы действий необходимо нажать Delete.
Ctrl + ЛКМ Переместить рабочую область относительно окна просмотра Для того чтобы переместить рабочую область в окне просмотра, необходимо зажать Ctrl + ЛКМ на белом поле области и переместить ее в нужную сторону.
Ctrl + скролл Изменение масштаба отображения Для того чтобы изменить масштаб отображения рабочей области, зажмите клавишу Ctrl и прокручивайте скролл в нужном направлении, увеличивая или уменьшая масштаб. Позволяет изменять масштаб относительно выбранного действия схемы, сохраняя его в центре экрана.
Alt Выбор области приближения Чтобы выделить область, которая будет увеличена во все окно, нажмите Alt и появившимся указателем выделите нужную область.
Ctrl + G Сгруппировать действия Для группировки действий на рабочей области необходимо выделить нужные действия и нажать Ctrl + G.
Ctrl + Shift + G Разгруппировать действия Для разгруппировки действий на рабочей области необходимо выделить нужную группу и нажать Ctrl + Shift + G.
Alt + P Play/Pause в режиме отладки Для Play/Pause в режиме Debug нажмите Alt + P.
Alt + ↓ Шаг вперед при запуске в режиме отладки Для шаг вперед при запуске в режиме Debug нажмите Alt + стрелка вниз.
Alt + S Стоп в режиме отладки Для Stop в режиме Debug нажмите Alt + S.

Ограничения расширения экрана при работе с некоторыми действиями

При работе с действиями группы Windows, работающих с Win-элементами, с действями группы SAP, а так же с действием «Найти текст на экране» из группы Vision необходимо учитывать следующие ограничения, связанные с соотношением масштаба dpi к процентам:

Проверить путь: HKEY_CURRENT_USERControl PanelDesktop

Проверить путь: HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionThemeManager

Если их нет, то расчеты проходят с учетом dpi 96, если имеется, то используем значение оттуда.

После изменения масштаба экрана в разделе «Параметры», ПК необходимо перезагрузить.