@Q_Q К сожалению через node.js и ws модуль не могу конектится к сокету т.к там каждый раз создаётся уникальная ссылка для нового пользователя, а объект который её создаёт определить для меня трудно сайт написан на react + obfurscator. Плюс к этому ещё и в самом ws внутри нужно каждые 5 минут отправлять токен аутентификации который генерирует какая-то анонимная функция либо вообще на сервере. Вроде ещё как можно сделать обёртку или сделать прокси чтобы свои обработчики повесить но это уже вообще темный лес для меня недостижимый. Поэтому пришлось использовать такой костыль. В Принципе все работает, ws команды я отправляю также через Ява скрипт и взаимодействую с этим сайтом быстро не используя веб интерфейс сайта вообще. Единственная проблема это видеть всю консоль не только в режиме отладчика. Я думал может в BAS есть какой-то свой способ о котором я не знаю, просто парсить ее в переменную бесконечно каждый раз обращаясь к ней и записывая последнее действие по умолчанию
Перескакивание действий между функциями
-
Здравствуйте! Не знаю сообщалось ли о данном баге и вообще баг ли это, но на понимание этой "фичи" у меня вчера ушло около 2ух часов. Суть в следующем:
У меня в проекте несколько функции внутри которых отправляются одинаковый запрос, но с разными передающимися параметрами. Так же после отправки get запроса я проверяю статус ответа и если он отличен от 200, то повторяю запрос путем возврата к метке, установленной перед запросом. Имена меток внутри каждой функции одинаковы.
Проверяя работу проекта в режиме записи все отрабатывается как положено, код читается поэтапно, в случае "неверного" ответа происходит возврат к метке, после отработки одной функции переходит в следующую и там все нормально. Но запустив в режиме "запуск" я очень удивился увидев в логах что идет постоянно ошибка 404 - неверные параметры в запросе отправленные клиентом серверу. Как так, ведь я только что отправлял те же самые параметры и все было нормально?
Сначала полез смотреть еще раз код, еще раз проверял в режиме "запись". все нормально. Потом я добавил в лог отображение текста ответа, но в режиме "запись" он не отображался!! Я немного офигел и решил изменить текст лога при ответе отличном от 200. Какого же было мое удивление, когда я увидел в логе старый вариант ответа!! Я начал и пересохранять проект, проверять на ошибки, все бестолку.
Убил на это почти 2 часа, дело было уже ночью и голова уже кипела, видимо поэтому не сделал сразу следующее, а нужно было начать именно с этого: посмотрел номер действия вызывающего данный лог. И очень удивился когда обнаружил, что он вызывается совсем из дугой функции!
И тут до меня дошло, что в режиме "запись" код читался последовательно и метка ставилась 1 . А в режиме "запуск", когда действие доходит до создание метки, она ставится сразу во всех функциях, а т.к. название у меток одинаково во всех функциях, при действии возврат к метке происходит переход к последней поставленной метке, тобишь к совсем другой функции, где переданные параметры не верны и отсюда статус 404!!
Я как-то не ожидал такого, ведь в описании к функции сказано: "Недавно начатые потоки не знают о переменных или состоянии браузера в потоке, который их запускали, поэтому обмен данными между стартовым потоком и недавно созданными может осуществляться только с помощью глобальных переменных или ресурсов.". Получается что функция это закрытый контейнер, который не знает что творится в других функциях и войти в него с параметрами можно только через глобальные переменные. А на практике получается, что переход к метке виден любой функции или точнее переход происходит к последней выставленной метке.
Для проверки данного бага прилагаю простенький проект.
Эксперимент.xml
P.S.: Да, забыл написать, версия движка 24.1.1 -
Если не ошибаюсь... Если асинхронные функции запускаете, то это был бы баг. Если обычные у вас функции, то не удивительно... Сделайте разные названия меток и проблема исчезнет. Если, я конечно правильно понял вашу проблемы.
P.S. Тестовый скрипт не смотрел.... -
@Игорь777 Метки то я как раз уже переименовал и все заработало. Я просто хочу понять, баг это или нет. Есть подозрение, что метка как глобальная переменная, чтобы можно было вернуться из любого места в нужное место в нужную функцию. Но тогда это нужно добавить в описание к метке! А так из описания к функции и отсутствия данной приписке в описании к метке возникает недопонимание.
-
@DraikKin Хм... Ну на форуме часто встречал сообщения, что меткие надо писать с уникальынми названиями... По поводу бага, спорный вопрос... Если учесть, что в BAS выполнение всех действий идет последовательно, то можно считать это неким багом)
-
А причем тут потоки к функциям? Функция это не поток и "Недавно начатые потоки не знают о переменных или состоянии браузера в потоке, который их запускали, поэтому обмен данными между стартовым потоком и недавно созданными может осуществляться только с помощью глобальных переменных или ресурсов." Тут вообще не к месту.Для теста в функции а создаем переменную а в функции б ее выводим в лог:В логе будет наша переменная.Так что это не баг а невнимательность
-
В функции один метку надо ставить fun1 если это не общее действие, за границей функции и будет порядок.
-
Вообще косяк баса если он даёт ставить одинаковые метки, просто я не встречался с этим, потому что в голове точка входа всегда уникальная.