Как вернуться к блоку выполненному с ошибкой?
-
Добрый день, есть скрипт в котором находится много функций для разных действий(логин в аккаунт, проверка содержимого и т.д.). Иногда в скрипте бывают случайные ошибки, так как сервис с которым работаю очень рандомный, но суть не в этом. При ошибке отлавливаю error_id, и начинаю функцию заново. Есть ли возможность сразу найти айди блока и перейти к нему? Думал сначала на каждый блок вешать if и сравнивать с error_id, но действий в скрипте слишком много чтоб такое сделать.
-
@Webmartin вверху справа в блоке действий есть кнопка поиска - вот туда айди вставляете и сразу перейдете к блоку с ошибкой
-
@Bigma Это знаю, но я имел ввиду автоматом чтоб находило блок по id и переходило к нему в режиме запуска
-
Либо как-то через "выполнить код"? Вопрос все еще открыт
-
@Webmartin said in Как вернуться к блоку выполненному с ошибкой?:
Добрый день, есть скрипт в котором находится много функций для разных действий(логин в аккаунт, проверка содержимого и т.д.). Иногда в скрипте бывают случайные ошибки, так как сервис с которым работаю очень рандомный, но суть не в этом. При ошибке отлавливаю error_id, и начинаю функцию заново. Есть ли возможность сразу найти айди блока и перейти к нему? Думал сначала на каждый блок вешать if и сравнивать с error_id, но действий в скрипте слишком много чтоб такое сделать.
В BAS нет функции для того, что бы переместить точку выполнения на действие по его id. Вообще очень сомнительная схема работы, когда у вас действие завершается ошибкой, какой смысл его повторно выполнять?
К примеру если у вас действие "Клик" не может найти элемент и не дождавшись элемента выдаёт ошибку, повторно выполнив это действие вы получите ту же ошибку снова.
-
@Fox Есть действия, которые при перезагрузке страницы или повторном входе в аккаунт уже не будет. Так же если функцию начать заново, то уже ничего не получится. Нужно чтоб определенное действие попыталось выполнится еще пару раз, в большинстве случаев это решает мою проблему. Вот логика которая используется в моем проекте, как можно реализовать действие в звездочках?
var RandAction = [Функция 1, Функция 3]; //переменная со случайными функциями while true{ if(RandAction == ""){ break;} var ERROR = 0; //переменная c количеством ошибок var Rand; //вырезать одну функцию со списка RandAction while(Функция 1 == Rand){*Логика как в Функция 3*} while(Функция 2 == Rand){*Логика как в Функция 3*} while(Функция 3 == Rand){ Игнорировать ошибки{ Вызвать Функцию 3; Break; } Если была ошибка{ ERROR++; If(ERROR == 3){break;} *Тут нужно вернутся к блоку с ошибкой внутри Функции 3* } } }
-
@Webmartin said in Как вернуться к блоку выполненному с ошибкой?:
@Fox Есть действия, которые при перезагрузке страницы или повторном входе в аккаунт уже не будет. Так же если функцию начать заново, то уже ничего не получится. Нужно чтоб определенное действие попыталось выполнится еще пару раз, в большинстве случаев это решает мою проблему. Вот логика которая используется в моем проекте, как можно реализовать действие в звездочках?
var RandAction = [Функция 1, Функция 3]; //переменная со случайными функциями while true{ if(RandAction == ""){ break;} var ERROR = 0; //переменная c количеством ошибок var Rand; //вырезать одну функцию со списка RandAction while(Функция 1 == Rand){*Логика как в Функция 3*} while(Функция 2 == Rand){*Логика как в Функция 3*} while(Функция 3 == Rand){ Игнорировать ошибки{ Вызвать Функцию 3; Break; } Если была ошибка{ ERROR++; If(ERROR == 3){break;} *Тут нужно вернутся к блоку с ошибкой внутри Функции 3* } } }
Повторюсь ещё раз, в BAS нет возможности перемещать точку выполнения скрипта к действию по его id. Чисто в теории вы можете создать метки перед каждым действием с названием id действия
И переходить к такой метке с помощью переменной [[ERROR_ID]], однако это действие находится внутри блока "игнорировать ошибки" и если перейти по метке внутрь блока, то сам блок работать не будет. То есть точка выполнения вернётся к действию, однако если оно снова вернёт ошибку, то поток завершится.
Тестовый скрипт: 2348.xml
-
@Fox Охх.. Все равно спасибо за помощь