Как вернуться к блоку выполненному с ошибкой?



  • Добрый день, есть скрипт в котором находится много функций для разных действий(логин в аккаунт, проверка содержимого и т.д.). Иногда в скрипте бывают случайные ошибки, так как сервис с которым работаю очень рандомный, но суть не в этом. При ошибке отлавливаю 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 действия

    db56a3fa-4db6-4afb-b366-9fa05c3216ef-изображение.png

    И переходить к такой метке с помощью переменной [[ERROR_ID]], однако это действие находится внутри блока "игнорировать ошибки" и если перейти по метке внутрь блока, то сам блок работать не будет. То есть точка выполнения вернётся к действию, однако если оно снова вернёт ошибку, то поток завершится.

    bbea497b-8f1c-48f7-ac04-d4ec4a8fc1b4-изображение.png

    Тестовый скрипт: 2348.xml



  • @Fox Охх.. Все равно спасибо за помощь


Log in to reply
 

  • 2
  • 6
  • 4
  • 3
  • 26
  • 20
  • 8
  • 10