Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Оглавление

Expand
titleНажмите здесь, чтобы развернуть оглавление
Table of Contents
exclude^Оглавление$

Описание

Данный экшен служит для получения значения указанного элемента. Это может быть:

  • Высота\ширина

  • Внутренний текст\HTML код

  • HTML атрибуты - id, class, name, style и др.

  • Имя тэга

  • И многое другое


Как добавить действие в проект?

Через контекстное меню Добавить действиеТабыПолучение значения

Через конструктор действий.

Либо воспользуйтесь умным поиском.


Как выбрать элемент для взятия значения?

Рассмотрим на примере https://lessons.zennolab.com/ru/registration. Представим, что Вам нужно получить текст кнопки, которая отправляет форму. Для этого делаем клик ПКМ по этой кнопке, из контекстного меню выбираем В конструктор действий.

Внизу, под окном браузера откроется Конструктор действий

Данные для поиска будут автоматически подобраны таким образом, что в результате поиска останется только один элемент. Ваши действия

  • В пункте Действие выбрать Get(1) (получить).

  • Текст кнопки хранится в атрибуте value поэтому именно его и выбираем из выпадающего списка Атрибут(2). В поле Значение появится то, что хранится в выбранном атрибуте(2), в нашем случае - это текст “Создать аккаунт”.

  • Перед добавлением экшена в проект не лишним будет протестировать его работу нажав соответствующую кнопку (особенно если Вы вносили изменения в конструкторе действий).

  • (Необязательно, но желательно) Добавить комментарий к экшену (особенно это касается экшена Получение значения т.к. комментарий по умолчанию крайне малоинформативен)

  • Добавляем экшен в проект клинув кнопку Добавить в проект


Для чего это используется?

  • Парсинг данных (правда для этого существует более подходящий инструмент - экшен Парсить страницу)

  • Проверка наличия элемента на странице. Это может быть полезно для:

    • определения того авторизовались ли мы (например, когда пользователь авторизован на сайте, то появляется кнопка перехода в личный кабинет, если она есть, значит всё ОК. Либо наоборот, когда пользователь авторизован, то пропадает какой-то элемент, как вариант - кнопка “Вход”, если её нет, значит мы вошли на сайт)

    • поиск сообщений с ошибками (очень полезно при разгадывании капчи: если капча была разгадана неверно, то очень часто на странице появляется новый HTML элемент с текстом ошибки; если после отправки капчи возвращается страница с таким элементом, то мы пробуем разгадать капчу ещё раз. Так же для проверки наличия текста на странице можно воспользоваться специальным экшеном Проверка наличия текста )

  • Проверка видимости элемента: бывают случаи, когда шаблон находит элемент, но по факту тот не отображается на странице (особенности построения HTML страниц), например это кнопка регистрации. Чтоб точно проверить отображена ли она на странице можно взять её атрибуты height (высота) и width (ширина), и проверить, чтоб каждый из них был больше 0.


Настройка действия: Вкладка “Основные”

После добавление экшена через конструктор действий в проект, откроем его настройки:

Image RemovedImage Added

1. “

Что брать

Image Added

Выбираем что именно нужно получить - id, class, innerText, innerHtml, value, height, width, style и др.

В данном поле можно и вручную указать значение, а не выбирать из предложенного.
На сайтах часто можно встретить атрибуты data-... (примеры - data-name, data-value, data-testid, data-whatever, ...)вот такие атрибуты (которых нет в выпадающем списке экшена) можно прописать вручную.

info

Можно использовать переменные проекта ({-Variable.var_name-})

2.

Поиск элемента


3. Какая вкладка

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

  • Активная вкладка

  • Первая

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

  • По номеру - в поле ввода надо будет ввести порядковый номер вкладки (нумерация начинается с нуля!)

4. Документ

Рекомендуется ставить значение -1 (поиск во всех документах на странице). 

5. Форма

Тоже лучше ставить -1 (поиск по всем формам на странице). При выборе такого значения шаблон будет более универсальным.

Пример: на странице 3 формы - поиск, регистрация, заказ товара. Нам надо кликнуть в форме заказа по кнопке и мы выбрали в качестве значения поля “Форма” - 2 (два) (нумерация с нуля). Спустя какое-то время на сайте появляется новая форма, для входа, и вставлена она перед формой заказа. Под номером 2 теперь будет форма входа и наш шаблон либо выдаст ошибку о том, что кнопка не найдена, либо (что гораздо хуже) будет кликать в другой форме по другой кнопке.

Info

В настройках программы (Настройки → Запись) можно отметить два чекбокса - “Искать во всех формах на странице” и “Искать во всех документах на странице”  и тогда всегда при поиске элементов для номера документа и формы будет стоять -1.

6. Тэг (только классический поиск)

Собственно HTML тэг у которого нужно получить  значение.

7. Условия (только классический поиск)

Image RemovedГруппа- приоритет данного условия. Чем выше это число тем приоритет ниже. Если не смогли найти элемент по условию  с наивысшим приоритетом, то переходим к условию со следующим приоритетом и так пока элемент не будет найден, либо пока не закончатся условия поиска. Можно добавлять несколько условий с одним приоритетом, тогда поиск будет производится по всем условиям с одинаковым приоритетом одновременно. Атрибут- атрибут HTML тэга по которому производится поиск.
  • Тип поиска:

    1. text - поиск по полному либо частичному вхождению текста;

    2. notext - поиск элементов в которых не будет указанного текста;

    3. regexp - поиск с помощью регулярных выражений;

  • Значение - значение атрибута HTML тега (из 6-го пункта)

  • № совпадения - порядковый номер найденного элемента. 

  • Info

    Чтобы удалить условие поиска необходимо кликнуть ЛКМ по полю слева от него (на скриншоте выделено синим цветом) и нажать кнопку delete на клавиатуре.

    Info

    Для поиска нужного элемента может использоваться несколько условий.

    Всегда важно стараться подбирать условия поиска таким образом, чтоб оставался только один элемент, т.е. порядковый номер был 0 (нумерация с нуля). Так же в поле № совпадения можно использовать диапазоны.

    Include Page

    Классический - Поиск по параметрам HTML элемента: тэг, атрибут и его значение.

     

    Image Removed

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

    Image Removed
    Поиск элементов на странице
    Поиск элементов на странице

    Настройка действия: Вкладка “Дополнительно”

    Image RemovedImage Added

    Ожидание1.

    Подождать перед выполнением

    Сколько времени шаблон экшен будет ожидать перед тем как установить значениевыполнением.

    2.

    Ждать элемент не более

    Если по истечении указанного времени элемент не появился на странице, то экшен завершит работу с ошибкой.


    Пример использования

    Разберём один из способов применения. На примере https://lessons.zennolab.com/ru/advanced.

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

    Если мы всё верно заполнили и правильно разгадали капчу, то получим страницу, где будет текст Wellcome!

    Если капча разгадана неверно, то загрузится странице с текстом wrong captcha

    Используя конструктор действий создаём экшен Взятия значения, в который сохраняется текст, показанный на скриншотах выше. Но в переменную попадает много лишнего - текст adv_reg, названия пунктов меню. Используя Обработку текста и простое регулярное выражение (Wellcome!|wrong\ captcha) ищем либо Welcome либо wrong captcha. С помощью Switch делаем проверку на то, что содержится в переменной. Если там Welcome, то отправляем информационное сообщение в лог; если wrong captcha - отправляем сообщение в лог о том, что не удалось зарегистрироваться

    Полезные ссылки