Desktop picker
Desktop picker — это инструмент, позволяющий определять элементы рабочего стола или приложения, с которыми необходимо взаимодействовать боту.
Существует три способа открытия Desktop picker:
- Кнопка «Указать новый элемент» в параметрах действия, например, «Клик по элементу» из раздела «Десктопные приложения» → «Мышь». При нажатии на эту кнопку запустится режим выбора, в котором вы можете указать необходимый элемент. После выбора элемента откроется окно Desktop Picker, в котором можно протестировать и изменить выбранный элемент.
- Инструменты → Process Recorder → Desktop. В данном случае вы сразу перейдете в режим выбора элементов. За один раз можно выбрать до десяти элементов (для клика и для ввода), при этом во время выбора окно приложения Desktop Picker показываться не будет. После выбора вы вернетесь в окно Studio Pro. На рабочей области при этом появятся блоки соответствующих действий («Клик по элементу» или «Ввод в десктопное приложение»).
- Панель «Элементы». Через эту панель можно отредактировать уже обозначенный элемент или создать новый. Для этого в элементе нужно нажать кнопку «Изменить элемент». В этом случае откроется окно селектора, в котором по кнопке «Заменить элемент» можно выбрать новый элемент рабочего стола.
Работать с инструментом довольно просто. При нажатии на кнопку «Указать новый элемент» Studio Pro сворачивается, запускается режим выбора, в котором можно выбрать нужный элемент интерфейса. При наведении курсора на элемент, он будет обведен красной рамкой. Нажатие на сочетание клавиш CTRL+X фиксирует выбранный элемент. Кнопка ESC позволяет сбросить режим выбора элемента.
После того, как элемент выбран, открывается окно «Desktop picker».
Справа от названия элемента отображается его статус, показывающий, найден элемент, не найден элемент или найдено несколько элементов.
Расширенные опции
Расширенные опции представляют структуру (селектор) выбранного элемента, который обычно состоит из вкладок, а каждая вкладка — из атрибутов и их значений. Так отображается иерархия того, как данный элемент интерфейса был создан разработчиками приложения. Вы можете изменить, выбрать или исключить атрибуты для достижения большей точности и стабильности взаимодействия с элементом.
Рассмотрим пример селектора на приложении «Блокнот».
Вкладки
Слева в данном окне есть две вкладки — «Window», обозначающая само окно приложения, и «Edit», обозначающая выбранное поле ввода в Блокноте.
Обратите внимание на флажки справа от названий вкладок. Эти флажки позволяют исключать вкладки из селектора. В некоторых ситуациях количество вкладок может быть достаточно большим, что может сделать селектор менее стабильным. При этом для однозначного определения элемента эти вкладки не всегда нужны (как правило, речь идет о «промежуточных» вкладках — вкладках между первой и последней). В таком случае исключение этих вкладок из селектора может сделать селектор более стабильным и при этом менее громоздким. Однако имейте в виду, что исключение каких-либо вкладок из селектора в некоторых случаях может привести к более медленной работе Desktop Picker.
«Атрибут», «Вычисление», «Значение»
Каждая вкладка содержит столбцы «Атрибут», «Вычисление» и «Значение». Рассмотрим смысл этих столбцов на примере одного из атрибутов выбранного элемента блокнота (смотрите выше). Пусть это будет атрибут Name
:
- Колонка Атрибут равна
Name
- по сути это имя элемента со вкладкиWindow
. - Колонка Вычисление имеет значение
Равно
. Данный параметр позволяет указать, как нужно осуществлять поиск селектора по данному атрибуту. Если стоитРавно
(как у нас в примере), то бот при поиске элемента будет искать селектор, у которого атрибутName
в точности равен значению из таблицы. - Колонка Значение равна
Новый текстовый документ — Блокнот
, так вкладкаWindow
в данном случае соответствует самому окну блокнота, у которого именно такой заголовок.
В зависимости от сценария работы с селектором значения некоторых атрибутов могут динамически меняться. Например, если начать вводить текст в Блокнот, заголовок окна изменится — перед названием появится символ «*» (что соответствует действительности - посмотрите на заголовок окна самого блокнота и убедитесь в этом). Такое же изменение произойдет и в атрибуте в Desktop Picker.
Это означает, что предыдущий вариант селектора (без «*» в атрибуте Name
) не адаптирован под случай, когда в блокнот начали писать какой-то текст, что привело бы к ошибке бота.
Чтобы избежать таких ошибок, есть способы адаптироваться под динамическое изменение атрибутов. Эти способы заложены в колонке «Вычисление» в таблице с селектором. Рассмотрим их подробнее:
Равно
— указывает, что при поиске элемента значение данного атрибута нужно проверять на строгое равенство. На примере с Блокнотом это означает, что заголовок окна должен быть строго равенНовый текстовый документ — Блокнот
. То есть элемент, у которого атрибутName
равен, допустим,Текстовый документ - Блокнот
уже не будет принят во внимание ботом.Вычислить
— позволяет задать переменную, определенную в workflow, в качестве значения атрибута. При поиске селектора с вычисляемым атрибутом равенство также строгое (только значение атрибута уже определяется не фиксированным текстом, а переменной).Wildcard
— позволяет задать правило подстановки символов в строке значения. Это позволяет адаптироваться под динамические атрибуты. Существует два символа, с помощью которых можно задать правило подстановки:
- «*» — заменяет любое количество символов. Например, если установить значение
* — Блокнот
, то бот будет искать все элементы, у которых атрибутName
равен какому-либо набору символов, за которыми далее следуют пробел, тире, пробел и словоБлокнот
. - «?» — заменяет только один символ. Таким образом, если установить значение
?Новый текстовый документ — Блокнот
, то бот будет искать все элементы, у которых содержится какой-либо символ (один), а затем в точности фразаНовый текстовый документ — Блокнот
.
- «*» — заменяет любое количество символов. Например, если установить значение
Содержит
— позволяет задать часть текста, которая обязана содержаться в значении атрибута. То есть при поиске бот будет искать такие элементы, у которых данный атрибут точно содержит заданный текст. Например, если в селекторе будет указан атрибутName
, который «Содержит» значениеБезымянный - Блокнот
», а название окна Блокнота при этом будет иметь вид*Безымянный - Блокнот
, то такой селектор будет найден.
Кнопка «Проверить» в окне селектора позволяет протестировать, корректно ли определяется элемент с выбранным селектором.
Замена элемента
Для понимания принципа работы функции замены элемента рассмотрим основной сценарий ее применения. Предположим, вы выбираете элемент, запускаете бота — все работает как и должно. После каких-либо изменений в самом приложении бот по какой-то причине перестает правильно работать (или вовсе не запускается). Далее вы, скорее всего, попробуете выбрать элемент заново, повторить те же самые действия и запустить бота. Но и это может не сработать. Такая ситуация может возникать из-за динамических изменений параметров приложения, с которым взаимодействует бот.
Рассмотрим пример такой ситуации при работе со стандартным «Блокнотом».
Если вы только что открыли «Блокнот» и еще не ввели никакой текст, то название текстового файла вверху окна будет иметь вид Безымянный — Блокнот
.
Если начать вводить какой-либо текст в поле ввода, то название вверху изменится. Теперь оно будет иметь вид *Безымянный — Блокнот
.
Рассмотрим еще один случай: вы открываете уже созданный текстовый файл с каким-то содержанием и заданным при сохранении именем.
Становится понятно, что на разных этапах работы с «Блокнотом», его название и содержимое будет меняться. Это и есть те динамические изменения параметров, о которых мы упоминали выше. Рассмотрим их более подробно.
Для примера возьмем действие Клик по элементу. Выберем любой элемент «Блокнота» через Desktop Picker. Например, можно выбрать поле ввода или кнопку «Файл». Элемент определится без проблем и бот сможет с ним взаимодействовать, вы увидите сообщение «Найден 1 элемент». Сохраним текущий текущий элемент с помощью кнопки «СОХРАНИТЬ». Запустите бота, убедитесь, что он работает.
Но вы можете столкнуться и со сценарием, когда боту нужно будет работать с разными текстовыми файлами. Вернемся в «Блокнот» и введем в поле ввода число 123
, после чего изменится заголовок окна «Блокнота» — до момента сохранения файла перед заголовком появится символ «*». Таким образом, весь заголовок будет иметь вид *Безымянный — Блокнот
. Попробуем запустить бота: он не сработает, а в консоли мы увидим сообщение об ошибке.
Рассмотрим еще один сценарий. В текущем окне «Блокнота» откроем уже существующий текстовый файл. Обратите внимание на заголовок «Блокнота» — он будет иметь вид {{Название документа}} — Блокнот
, это значит, что название может быть любым. На скриншотах ниже название документа будет иметь вид Текстовый файл
.
Снова попробуем запустить бота. В этом случае бот также не сработает и мы увидим ошибку.
Давайте разбираться, что же идет не так и как это исправить.
- Перейдем во вкладку «Редактировать элемент» в параметрах действия
- Нажмем на кнопку «ИЗМЕНИТЬ ЭЛЕМЕНТ»
- Протестируем его, нажав на кнопку «ПРОВЕРИТЬ». Элемент найден не будет.
Раскроем «Расширенные опции», чтобы подробнее рассмотреть параметры выбранного элемента. Перейдем во вкладку «Window», в которой есть атрибут Name
, отражающий заголовок окна «Блокнота». Поскольку значение атрибута установлено так, что заголовок должен быть строго равен значению Безымянный — Блокнот
, Desktop Picker не может определить файл с измененным заголовком.
Таким образом, из-за изменений определенных параметров (а они могут меняться и в процессе выполнения бота), элемент не находится и бот не может корректно сработать.
Теперь посмотрим, как можно легко решить эту ситуацию. Нажмем на кнопку «ЗАМЕНИТЬ ЭЛЕМЕНТ» в окне Desktop Picker, снова выберем элемент последнего открытого «Блокнота» и нажмем CTRL+X. После этого откроется такое окно:
В верхней части этого меню показаны три доступные версии алгоритма:
- Старая версия. Это та версия элемента, которая была последней до нажатия на «ЗАМЕНИТЬ ЭЛЕМЕНТ». В нашем случае, это версия, где атрибут
Name
равенБезымянный — Блокнот
. - Новая версия. Это та версия элемента, которую мы только что выбрали. То есть атрибут
Name
равен{{Название документа}} — Блокнот
. - Улучшенная версия. Эта версия элемента комбинирует характерные черты старой и новой версии для создания такого селектора, который сможет определить элемент при любом заголовке окна «Блокнота».
Выберем «Улучшенную» версию селектора и раскроем «Расширенные опции». Здесь мы увидим, что измененные параметры подсвечиваются оранжевым цветом. Теперь элемент будет определяться в любом случае, поскольку для атрибута Name
будут выбраны параметры Wildcard
→*— Блокнот
, то есть платформа будет искать элементы, у которых в атрибуте Name
будет присутствовать фраза — Блокнот
и любое количество любых символов до этой фразы.
Далее останется только сохранить выбор элемента в таком виде. Вы также можете и вручную настроить «Атрибут», «Вычисление» и «Значение» таким образом, чтобы определялись нужные вам элементы. Подробнее об этом мы рассказывали выше в этой статье.