Перейти к основному содержимому

Выполнить событие

🔗 Оригинальная страница — Источник данного материала


Описание

Данный экшен применяется для взаимодействия с сайтом.

Для ввода текста используется экшен Установить значение.

Действия, которые можно эмулировать:

  • клик по элементу
  • наведение курсора мыши
  • нажатие кнопки
  • перетягивание элементов по сайту (drag & drop)
  • и прочие

image-20200809-071550

Cписок возможных действий

Их довольно много. Поэтому для получения более подробной информации о каждом, скопируйте его название, вставьте в поисковую строку любого браузера и добавьте javascript. В итоге должно получиться что-то такое: oncontextmenu javascript или javascript ondblclick.

Таким образом можно найти описание интересующего вас действия.

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

Через контекстное меню: Добавить действие → Табы → Выполнить событие

image-20200811-073406

Области применения

  • чаще всего этот экшен используется для кликов по кнопкам, чекбоксам и пунктам в меню
  • перемещение элементов по сайту
  • эмуляция наведения мыши для получения всплывающей подсказки
  • вызов JavaScript событий для полей ввода

Иногда создатели сайтов добавляют на поля ввода дополнительные JS-скрипты, без срабатывания которых невозможно продолжить работу. Например, проверка корректности введённых данных. В подобных случаях могут помочь события onchange и onkeypress.

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


Выбор элемента для события

Рассмотрим на примере этой страницы.

image-20200809-073949

Когда курсор мыши наводится на один из смайлов, он меняет цвет (включая фон, глаза и рот). Кликаем по нужному смайлу правой кнопкой мыши и отправляем его в Конструктор действий (1).

image-20200811-073704

Параметры поиска подставились автоматически, поэтому на них не будем заострять внимание. Идём дальше:

  • в пункте Выбор действия (2) необходимо выбрать Rise (по умолчанию стоит Set).
  • среди Событий (3) выбираем onmouseover.
  • перед добавлением экшена рекомендуем протестировать (4) его работу (жёлтый смайлик должен сменить цвет).
  • также советуем добавить комментарий (6) к экшену (подпись по умолчанию малоинформативна).

image-20200809-081338

  • если всё настроено и работает корректно, то добавляйте экшен в проект (5)

Вкладка «Основные»

image-20210525-121149

Выберите событие

Из выпадающего списка выбираем то, что хотим сделать с элементом.

image-20210525-121229

Значение можно указать и вручную, не обязательно выбирать из предложенных.

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

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

Прежде чем взаимодействовать с элементом на странице, его надо найти. Для экшенов:

существует два способа поиска элементов — классический и с помощью XPath.

Классический

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

image-20200805-202115

XPath

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

image-20200805-202209


Доступные параметры

Какая вкладка

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

Возможные значения:

  • Активная вкладка;
  • Первая;
  • По имени — при выборе данного пункта появится поле ввода для названия вкладки;
  • По номеру — в поле ввода надо будет ввести порядковый номер вкладки (нумерация начинается с нуля!).

Документ

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

Форма

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

Почему лучше ставить -1 ?

Пример. На странице размещены три формы: форма поиска, форма регистрации и форма оформления заказа. Для клика по кнопке в форме заказа в настройках действия указано значение поля «Форма» — 2 (нумерация начинается с нуля).

Со временем на сайте появляется новая форма — форма входа, которая добавляется перед формой заказа. В результате форма заказа смещается, и под индексом 2 теперь оказывается форма входа.

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

Примечание

В настройках программы можно включить два параметра: «Искать во всех формах на странице» и «Искать во всех документах на странице». При их активации при добавлении элемента в Конструктор действий значения полей «Номер документа» и «Номер формы» автоматически устанавливаются в -1, что означает поиск элемента по всей странице без привязки к конкретному документу или форме.

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

image-20210525-095347

Это HTML тэг, у которого нужно получить значение.

Можно указать сразу несколько тегов через ; (точка с запятой)

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

image-20210525-100053

Для удаления условия поиска

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

1. Группа — это параметр, определяющий приоритет условия поиска. Чем меньше значение группы, тем выше приоритет условия.

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

Допускается добавление нескольких условий с одинаковым приоритетом. В этом случае поиск выполняется одновременно по всем условиям, относящимся к одной группе.
2. Атрибут — атрибут HTML тэга по которому производится поиск.
3. Тип поиска:

  • text — поиск по полному либо частичному вхождению текста;
  • notext — поиск элементов в которых не будет указанного текста;
  • regexp — поиск с использованием регулярных выражений. По умолчанию поиск выполняется без учёта регистра символов.
    Если необходимо учитывать регистр, добавьте в начало регулярного выражения конструкцию (?-i), которая отключает регистронезависимый режим поиска.
  1. Значение — значение атрибута HTML тега.
  2. № совпадения — порядковый номер найденного элемента (нумерация с нуля!). В этом поле можно использовать диапазоны и макросы переменных.
Для поиска нужного элемента можно использовать несколько условий.

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

Координаты курсора мыши (только события drag и drop)

image-20210525-121507

Это уникальные свойства, доступные только для событий перетаскивания элементов: drag — откуда нужно перетащить элемент, и drop — куда его нужно переместить.


Вкладка «Дополнительно»

image-20241101-144539.png

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

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

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

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

3. Эмуляция

  • По умолчанию — берётся значение из Настроек проекта.
  • Своя — выставляем персональный уровень эмуляции для данного экшена.
    Настройки проекта в таком случае будут игнорироваться.

Простые клики

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

ПКМ по любому чекбоксу или переключателю → В конструктор действий → Rise → click → Тестировать или Добавить в проект
image-20200809-102524

Всплывающая подсказка

Пример №1

Такие подсказки появляются при наведении курсора на некоторые элементы сайта.

Пример:

image-20200809-100707

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

image-20200809-101154

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

Пример №2

Но иногда всё немного сложнее. При наведении курсора мыши отправляется запрос на сервер. Далее происходит ожидание ответа, который затем встраивается в тело страницы. Всё это происходит с помощью скрипта на JavaScript.

В качестве примера возьмём форум Zennolab. Если навести курсора на название темы, то спустя короткое время появится небольшое окно с её контентом.

image-20200809-104603

Есть несколько вариантов развития:

  • можно с помощью экшена Выполнить событие эмулировать onmouseover и дожидаться появления окна. Затем с помощью Получения значения парсить innerHtml, а потом уже через Обработку текста достать нужные нам значения.
  • либо попробовать повторить запрос, который отправляется на сервер. С этим помогут встроенные средства:
Инструменты для работы с запросами

image-20200809-111937

  1. Кнопка запуска инструментов web-разработчика
  2. Собственно окно инструментов web-разработчика
  3. Монитор трафика

Синим выделен один и тот же запрос в инструментах и в окне трафика.

Создать действие из запроса

Одним из преимуществ Окна трафика является то, что из него автоматически можно создать экшен запроса через ПКМ.

image-20200811-075118


Drag&Drop

  • Кликаем ПКМ по элементу, который хотим перетянуть, и отправляем его в Конструктор действий. Там мы:
    • выбираем действие Rise и событие drag
    • устанавливаем X и Y — это координаты начала движения. Они отсчитываются от верхнего левого угла выбранного элемента. У нас это X=15 и Y=5. Тут шаблон совершит первый клик c захватом (drag).
  • Теперь делаем клик ПКМ по месту, в которое надо перетащить, и так же отправляем в Конструктор действий. В котором:
    • снова выбираем действие Rise, но теперь с событием drop
    • устанавливаем X и Y — здесь это координаты конца движения. Они отсчитываются от верхнего левого угла выбранного элемента. У нас это X=20 и Y=30. В эту точку второго элемента шаблон перетащит (drop) первый элемент.
image-20200809-130043
(1) Откуда начинается движение → (2) Куда элемент перетягивается