BadEnd (выход при возникновении ошибки в проекте)

Описание

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

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

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

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

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

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

  • Если изменилась верстка на сайте и шаблон теперь не может найти нужный HTML элемент

  • Не до конца продуманная логика шаблона, не предусматривающая определенные ситуации

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

  • Возврата данных обратно в списки / таблицы для последующего их использования без потери.

  • Логирования ошибок

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

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

Как работать с экшеном?

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

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

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


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

По умолчанию, при отладке проект переходит в Bad/GoodEnd только один раз. Затем нужно перезапустить проект кнопкой “С начала”.
Для возможности многократного перехода в эти экшены при отладке нужно включить опцию Переходить в Bad/GoodEnd при многократной отладке в настройках программы.


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

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

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

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

Каждый шаг в шаблоне имеет уникальный идентификатор, по которому его можно найти в ProjectMaker'e. Для того чтобы получить id шага с ошибкой, необходимо в логах ZennoPoster, кликнуть по ошибке правой кнопкой мыши и нажать «скопировать id действия»:

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

Либо воспользоваться опцией “Показать ошибочное действие в PM“, которое сразу откроет проект в ProjectMaker с выделенным действием, которое вызвало ошибку при выполнении:

Но за всеми ошибками сложно уследить, поэтому мы рекомендуем логировать их в файл. Чтобы создать файл лога, в который запишется ошибка при выполнении проекта, необходимо после Bad End добавить кубик Записать в файл и вставить в него следующий текст:

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

Теперь при возникновении ошибки в шаблоне, Bad End создаст файл log.txt, в который запишется время и ID ошибки. Если одного только идентификатора мало для устранения проблемы, Вы можете добавить сохранение скриншота инстанса, исходного кода страницы и значения переменных. Это позволит максимально подробно восстановить картину, которая привела к ошибке, и внести необходимые правки для нормализации работы проекта.

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

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

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

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


 

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