Аналог BadEnd

  • Автор темы Автор темы Igorii
  • Дата начала Дата начала

Igorii

Client
Регистрация
21.02.2015
Сообщения
375
Реакции
311
Баллы
63
Друзья, помогите со снипетом, (если вообще, такой возможен). Делаю шаблон, типа гулялки, по большому порталу, столкнулся с тем, что ошибка может возникнуть в любом месте, типа непрогруз элемента, новое всплывающее окно и т.п. Отловить все эти моменты проблематично, а вести с каждого кубика выход по красной, большая паутина получается. Возможно ли сделать аналог BadEnd, но что бы при непредвиденной ошибке, шаблон не завершался, а возвращался на определённый кубик и продолжал работу?
 
Друзья, помогите со снипетом, (если вообще, такой возможен). Делаю шаблон, типа гулялки, по большому порталу, столкнулся с тем, что ошибка может возникнуть в любом месте, типа непрогруз элемента, новое всплывающее окно и т.п. Отловить все эти моменты проблематично, а вести с каждого кубика выход по красной, большая паутина получается. Возможно ли сделать аналог BadEnd, но что бы при непредвиденной ошибке, шаблон не завершался, а возвращался на определённый кубик и продолжал работу?
В зеннопостере такого не реализовано и это похоже на зацикливание, что зенка не очень то и любит, в результате можно получить краш. Поэтому данный вопрос больше уместен наверное в теме предложение , где создать тему на добавление данной функции, но что-то мне подсказывает, что такое будет не реализовано, так как зацикливание вызывает больше проблем, чем стабильности, если даже и добавят данное, то вы представьте, сколько потом будет жалоб на данную функцию, что с ней проблем много.
 
  • Спасибо
Реакции: Igorii
Такого нет и не будет.
Выше правильно написали, это очень плохая идея любую ошибку заводить обратно на кубик где она возникла. Если элемент не найден , допустим за 35 секунд, то это не поможет ему появится. Тут как раз надо по красной ветке выходит на какую-то альтернативную логику. например на счетчик и перезагрузку страницы. Никакой паутины лишней не будет, если разбивать шаблон на логические блоки и в каждом таком блоке предусматривать свою обработку ошибок. Конечно если с каждого кубика вести линию на один кубик (типа обработка ошибки), а потом через свитч прокидывать обратно, то это жесть. но это совсем не правильное использование графических схем. Если обработка универсальная, то лучше сделать подпроект и вызывать его по красной линии. Возвращатся будет хотя бы в тоже место откуда и вызвали, а отсюда можно либо на начало логического блока вести, либо уже на BADEND, если обработчик ошибки покажет что все, приплыли к криту.
К тому же ведь можно просто поставить "не обязательное" и не будет ошибки не найденного элемента :)
 
  • Спасибо
Реакции: Igorii
Возможно ли сделать аналог BadEnd, но что бы при непредвиденной ошибке, шаблон не завершался, а возвращался на определённый кубик и продолжал работу?
Так возвращайте в нужное место после BadEnd, кто вам мешает?
Только добавьте переменную - счетчик ошибок и проверяйте её на максимальное значение.
 
  • Спасибо
Реакции: Igorii
Так возвращайте в нужное место после BadEnd, кто вам мешает?
Да, это был бы вариант, но BadEnd срабатывает только один раз, несколько раз его невозможно использовать.

Такого нет и не будет.
Выше правильно написали, это очень плохая идея любую ошибку заводить обратно на кубик где она возникла.
Вы не правильно меня поняли, я не просил добавить это в функционал, просил снипет. И обратно, на тот же кубик, конечно нет смысла заводить ошибку, вывести нужно на другой кубик в начало проекта, например на паузу, а дальше шаб продолжит работать по заданному алгоритму и такая ошибка может уже и не возникнуть. Да вариантов решить этот момент много, но, в моём случае, самым изящным был бы многоразовый аналог BadEnd.

По поводу зацикливаний, если бездумно сделать, то конечно они возможны, но решается счётчиком ошибок, как и сказал Astraport
 
Да, это был бы вариант, но BadEnd срабатывает только один раз, несколько раз его невозможно использовать.


Вы не правильно меня поняли, я не просил добавить это в функционал, просил снипет. И обратно, на тот же кубик, конечно нет смысла заводить ошибку, вывести нужно на другой кубик в начало проекта, например на паузу, а дальше шаб продолжит работать по заданному алгоритму и такая ошибка может уже и не возникнуть. Да вариантов решить этот момент много, но, в моём случае, самым изящным был бы многоразовый аналог BadEnd.

По поводу зацикливаний, если бездумно сделать, то конечно они возможны, но решается счётчиком ошибок, как и сказал Astraport
Тут без стороннего dll не обойтись, если конечно вообще это разрешено или возможно. Чисто снипетом не отделаетесь.
 
По идее, встроенными инструментами зеннопостера можно собрать такой сниппет(слепок состояния переменных, отработавшие кубики и прочее-прочее, чтобы запускать поток снова фактически с места предыдущего обрыва), я бы даже взялся на досуге. Только, вот стоит ли оно того, чтобы городить такие костыли? Уж лучше и правильнее будет корректно продумать логику и обработку возможных ошибок.
Задумался над задачей и она мне показалась интересной своими трудностями, но ее реализация бессмысленна, да и досуга нет :(, так что, я, все-таки, пас.
Совет: Учитесь выстраивать логику шаблона в рамках не только блока кубиков, а всего проекта и остерегайтесь костылей.
 
  • Спасибо
Реакции: Igorii
По идее, встроенными инструментами зеннопостера можно собрать такой сниппет(слепок состояния переменных, отработавшие кубики и прочее-прочее, чтобы запускать поток снова фактически с места предыдущего обрыва), я бы даже взялся на досуге. Только, вот стоит ли оно того, чтобы городить такие костыли? Уж лучше и правильнее будет корректно продумать логику и обработку возможных ошибок.
Задумался над задачей и она мне показалась интересной своими трудностями, но ее реализация бессмысленна, да и досуга нет :(, так что, я, все-таки, пас.
Совет: Учитесь выстраивать логику шаблона в рамках не только блока кубиков, а всего проекта и остерегайтесь костылей.
Нет, если это сложно, то оно того не стоит). Я же говорю, что решить эту задачу другими методами не так трудно, просто именно в данном проекте, это был бы наиболее рациональный способ. Ну, а раз это сложно, то и не нужно. Спасибо!)
 
Кстати насчет состояния.... была у меня задача одна, надо было сделать много действий на одном аккаунте, но надо было уложится в 8 минут. если не укладывался то надо было делать перерыв не менее 15 минут. так вот при ошибках тоже можно это использовать. разбивается проект на логические блоки и после каждого пройденного блока ставится аккаунту метка. если вылетел, то при старте по меткам можно по отдельной логической ветке шустро дойти до нужного блока в любое время. я даже таблицу не заводил, просто делал запись с списке вида dfkjdj3@df.ru:1:1 , сплитовал и сразу понятно что идти к 3-й фазе.
 
У каждого кубика есть свое id ошибки, выглядят так ff84ce0a-5284-4c54-959c-3646a113d52c . Уходишь на счетчик, чтоб не создать бесконечный цикл, а потом на свитч, свитчи большие не делай, штук по 10, если там не нашел эту ошибку, уходишь на другой свитч по дефаулт, как то так строить логику.
 
  • Спасибо
Реакции: Igorii

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)