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

BadEnd

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


Описание

В случае возникновения ошибки в каком-либо из экшенов и при выходе из кубика по красной ветке выполнение проекта переходит в блок, который связан с действием Bad End. Это нужно, чтобы задать дополнительные действия в случае завершения работы шаблона с ошибкой.

Когда используется?

При работе шаблона могут возникнуть ошибки:

  • На сайте изменилась верстка, и шаблон теперь не может найти нужный HTML элемент.
  • Логика шаблона не полностью продумана и не учитывает определенные ситуации.

Из-за этого проект не будет выполнен до конца и завершится с ошибкой.
Чтобы исключить такие ситуации, можно использовать Bad End для:

  • Возврата данных обратно в списки или таблицы для последующего их использования без потерь;
  • Логирования ошибок;
  • Добавления в Blacklist невалидной информации;
  • Сохранения бэкапа.

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

Через контекстное меню: Добавить действие → Логика → BadEnd.

image-20200824-100554


Принцип работы

В случае завершения шаблона ошибкой, выполнятся действия, привязанные к Bad End:

image-20211017-043256

Bad End также срабатывает при прерывании шаблона или по истечению глобального таймаута выполнения.
За это отвечает настройка проекта в ZennoPoster — Выполнять BadEnd при прерывании проекта:

image-20200824-100812

Bad End срабатывает 1 раз для каждого потока.

Многократный переход в BadEnd при отладке проекта

При отладке проект переходит в BadEnd по умолчанию только один раз. Затем нужно перезапустить проект кнопкой С начала.

Для возможности переходить в BadEnd несколько раз подряд нужно включить в Настройках опцию Переходить в Bad/GoodEnd при многократной отладке.

image-20200824-100812


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

Восстановление данных в случае ошибки

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

Отследить и исправить ошибку

Каждое действие в шаблоне имеет уникальный идентификатор, с помощью которого его можно найти. Для того чтобы получить id экшена с ошибкой, нужно в логе кликнуть по ней ПКМ и нажать Скопировать id действия.

image-20200824-101926

Далее можно вызвать поиск через Ctrl+F, вставить полученный ID и нажать кнопку Найти.
Программа выделит проблемный экшен синей рамкой:

image-20200824-100903

Ошибочное действие также можно подсветить через ПКМ в логе и выбором нужной опции:

image-20200824-101952

Так как сложно уследить за каждой ошибкой, мы рекомендуем логировать их в файл. Для этого нужно после BadEnd добавить кубик Записать в файл и вставить в него этот текст:

{-TimeNow.Date-} {-Project.LastExecutedActionId-}

image-20200806-004040

Теперь при возникновении ошибки в проекте создастся файл log.txt, в котором будут записаны время и ID ошибки.

Если одного ID мало для определения проблемы, то можно добавить сохранение:

  • скриншота экрана;
  • исходного кода страницы;
  • значения переменных.
    Это позволит максимально подробно восстановить картину, которая привела к ошибке, и внести необходимые правки.

Добавление в Blacklist невалидной информации

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

image-20200824-101219

Сохранения бэкапа

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

image-20200824-101011


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