Описание
Данный экшен служит для получения значения указанного элемента. Это может быть:
Высота\ширина
Внутренний текст\HTML код
HTML атрибуты - id, class, name, style и др.
Имя тэга
И многое другое
Как добавить действие в проект?
Через контекстное меню Добавить действие → Табы → Получение значения
Через конструктор действий.
Либо воспользуйтесь умным поиском.
Как выбрать элемент для взятия значения?
Рассмотрим на примере https://lessons.zennolab.com/ru/registration. Представим, что Вам нужно получить текст кнопки, которая отправляет форму. Для этого делаем клик ПКМ по этой кнопке, из контекстного меню выбираем В конструктор действий.
Внизу, под окном браузера откроется Конструктор действий
Данные для поиска будут автоматически подобраны таким образом, что в результате поиска останется только один элемент. Ваши действия
В пункте Действие выбрать Get(1) (получить).
Текст кнопки хранится в атрибуте value поэтому именно его и выбираем из выпадающего списка Атрибут(2). В поле Значение появится то, что хранится в выбранном атрибуте(2), в нашем случае - это текст “Создать аккаунт”.
Перед добавлением экшена в проект не лишним будет протестировать его работу нажав соответствующую кнопку (особенно если Вы вносили изменения в конструкторе действий).
(Необязательно, но желательно) Добавить комментарий к экшену (особенно это касается экшена Получение значения т.к. комментарий по умолчанию крайне малоинформативен)
Добавляем экшен в проект клинув кнопку Добавить в проект
Для чего это используется?
Парсинг данных (правда для этого существует более подходящий инструмент - экшен Парсить страницу)
Проверка наличия элемента на странице. Это может быть полезно для:
определения того авторизовались ли мы (например, когда пользователь авторизован на сайте, то появляется кнопка перехода в личный кабинет, если она есть, значит всё ОК. Либо наоборот, когда пользователь авторизован, то пропадает какой-то элемент, как вариант - кнопка “Вход”, если её нет, значит мы вошли на сайт)
поиск сообщений с ошибками (очень полезно при разгадывании капчи: если капча была разгадана неверно, то очень часто на странице появляется новый HTML элемент с текстом ошибки; если после отправки капчи возвращается страница с таким элементом, то мы пробуем разгадать капчу ещё раз)
Проверка видимости элемента: бывают случаи, когда шаблон находит элемент, но по факту тот не отображается на странице (особенности построения HTML страниц), например это кнопка регистрации. Чтоб точно проверить отображена ли она на странице можно взять её атрибуты height и width, и проверить, чтоб каждый из них был больше 0.
Настройка действия: Вкладка “Основные”
После добавление экшена через конструктор действий в проект, откроем его настройки:
1. “Что брать”
Выбираем что именно нужно получить - id, class, innerText, innerHtml, value, height, width, style
и др.
В данном поле можно и вручную указать значение, а не выбирать из предложенного. На сайтах часто можно встретить атрибуты data-... (примеры - data-name, data-value, data-testid, data-whatever, ...)
вот такие атрибуты (которых нет в выпадающем списке экшена) можно прописать вручную.
Можно использовать переменные проекта ({-Variable.var_name-}
)
2. Поиск элемента.
Классический - Поиск по параметрам HTML элемента: тэг, атрибут и его значение.
XPath - поиск с помощью XPath выражений. С помощью него Вы можете реализовать более универсальный и устойчивый к изменениям вёрстки способ поиска данных в сравнении с классическим поиском или регулярными выражениями.
3. Какая вкладка
Выбираем вкладку, на которой будет производиться поиск элемента.
Возможные значения:
Активная вкладка
Первая
По имени - при выборе данного пункта появится поле ввода для названия вкладки.
По номеру - в поле ввода надо будет ввести порядковый номер вкладки (нумерация начинается с нуля!)
4. Документ
Рекомендуется ставить значение -1 (поиск во всех документах на странице).
5. Форма
Тоже лучше ставить -1 (поиск по всем формам на странице). При выборе такого значения шаблон будет более универсальным.
Пример: на странице 3 формы - поиск, регистрация, заказ товара. Нам надо кликнуть в форме заказа по кнопке и мы выбрали в качестве значения поля “Форма” - 2 (два) (нумерация с нуля). Спустя какое-то время на сайте появляется новая форма, для входа, и вставлена она перед формой заказа. Под номером 2 теперь будет форма входа и наш шаблон либо выдаст ошибку о том, что кнопка не найдена, либо (что гораздо хуже) будет кликать в другой форме по другой кнопке.
В настройках программы (Настройки → Запись) можно отметить два чекбокса - “Искать во всех формах на странице” и “Искать во всех документах на странице” и тогда всегда при поиске элементов для номера документа и формы будет стоять -1.
6. Тэг (только классический поиск)
Собственно HTML тэг у которого нужно получить значение.
7. Условия (только классический поиск)
Группа - приоритет данного условия. Чем выше это число тем приоритет ниже. Если не смогли найти элемент по условию с наивысшим приоритетом, то переходим к условию со следующим приоритетом и так пока элемент не будет найден, либо пока не закончатся условия поиска. Можно добавлять несколько условий с одним приоритетом, тогда поиск будет производится по всем условиям с одинаковым приоритетом одновременно.
Атрибут - атрибут HTML тэга по которому производится поиск.
Тип поиска:
text - поиск по полному либо частичному вхождению текста;
notext - поиск элементов в которых не будет указанного текста;
regexp - поиск с помощью регулярных выражений;
Значение - значение атрибута HTML тега (из 6-го пункта)
№ совпадения - порядковый номер найденного элемента.
Чтобы удалить условие поиска необходимо кликнуть ЛКМ по полю слева от него (на скриншоте выделено синим цветом) и нажать кнопку delete на клавиатуре.
Для поиска нужного элемента может использоваться несколько условий.
Всегда важно стараться подбирать условия поиска таким образом, чтоб оставался только один элемент, т.е. порядковый номер был 0 (нумерация с нуля). Так же в поле № совпадения можно использовать диапазоны.
Настройка действия: Вкладка “Дополнительно”
Ожидание
1. Подождать перед выполнением
Сколько времени шаблон будет ожидать перед тем как установить значение.
2. Ждать элемент не более
Если по истечении указанного времени элемент не появился на странице, то экшен завершит работу с ошибкой.
Пример использования
Разберём один из способов применения. На примере https://lessons.zennolab.com/ru/advanced.
С помощью Установки значений и переменных профиля заполняем поля формы. В реальном проекте нам бы пришлось распознавать капчу с помощью сервисов или вручную, но на данной странице капча-картинка всегда одна и та же. После ввода всех данных, с помощью экшена Выполнить событие, кликаем по кнопке Создать аккаунт. Далее события могут развиваться в нескольких направлениях:
Если мы всё верно заполнили и правильно разгадали капчу, то получим страницу, где будет текст Wellcome!
Если капча разгадана неверно, то загрузится странице с текстом wrong captcha
Используя конструктор действий создаём экшен Взятия значения, в который сохраняется текст, показанный на скриншотах выше. Но в переменную попадает много лишнего - текст adv_reg, названия пунктов меню. Используя Обработку текста и простое регулярное выражение (Wellcome!|wrong\ captcha)
ищем либо Welcome либо wrong captcha. С помощью Switch делаем проверку на то, что содержится в переменной. Если там Welcome, то отправляем информационное сообщение в лог; если wrong captcha - отправляем сообщение в лог о том, что не удалось зарегистрироваться