сорян я понял моя дибильная ошибка в режими записи по шагам добавлял вкладку с сайтом который открывается через прокси и как я понимаю в такой ситуации вкладка не подхватывает прокси а пытается открыть сайт через мой дефолтный IP
Баг с опцией "Остановить поток, если элемент не найден."
-
С этими опциями изначально были какие то проблемы (какие точно - не помню) по этому я ими не пользовался. Но сейчас из за соседней темы решил разобраться.
Перебрал сейчас все действия (или почти все) где есть эти опции, проверял на странице https://www.google.ru по несуществующему элементу >CSS> #text, в итоге почти все действия работаю правильно:
- Получить Код Элемента
- Получить Текст
- Выполнить Javascript На Элементе
- Скриншот (элемента)
- Решить Recaptcha 2.0
- Решить Капчу
- Прокрутка К Элементу
- Получить координаты
- Получить Стиль Элемента
- Получить Атрибут Элемента
- Установить Атрибут Элемента
- Установить Значение Комбобокса
- Установить Индекс Комбобокса
- Выбрать Случайный Элемент Из Комбобокса
Но есть действия, которые вылетают с ошибкой
Таймаут во время выполнения random point[documentRoot, css #text]:- Начать Перетаскивание На Элементе
- Закончить Перетаскивание На Элементе
- Очистить Поле
- Двигать Мышь Над Элементом
- Ввод текста
Вот тестовый скрипт
Ошибка возвращается из функции _random_point()
_SELECTOR = " \u003eCSS\u003e #text"; _call(_random_point, {})! _if(_result().length > 0, function(){ move( {} )! get_element_selector(_SELECTOR, false).nowait().clarify(X,Y)! _call(_clarify, {} )! mouse(X,Y)! page().type("фывафыва",0)! })!Функция судя по всему нужна для определения случайных координат на элементе (но ближе к центру) для наведения курсора. Не знаю, можно ли постить код функции из исходников BAS'a, по этому скажу только, что в ней есть небольшая ошибка если элемента не существует.
Чтобы действия не возвращали ошибку можно просто убрать или закомментировать фунцию:
_SELECTOR = " \u003eCSS\u003e #text"; //_call(_random_point, {})! _if(_result().length > 0, function(){ move( {} )! get_element_selector(_SELECTOR, false).nowait().clarify(X,Y)! _call(_clarify, {} )! mouse(X,Y)! page().type("фывафыва",0)! })!Но тогда действие будет пропускаться даже если селектор на странице есть (действие становится бесполезным)
Тестовый скрипт
Исправленную функцию скинул @support 'y. Может он её добавит в BAS, а может добавит проверку существования элемента в каждое действие, или решит эту задачу по своему.
-
-
@fastspace said in Баг с опцией "Остановить поток, если элемент не найден.":
В чем собственно баг?
Действия в которых отключенная опция "Остановить поток, если элемент не найден." всё равно завершит поток с ошибкой.
Я всегда это действие заворачиваю в блок игнор ошибок
Какое "это" действие? Я привёл 14 действий в которых эта опция работает

и 5 действий, в котором она не работает.А с какой ошибкой оно там вылетело меня мало волнует (таймаут или не найдено). В любом случае действие должно отработать без ошибки.
Программная ошибка (жарг. баг) — означает ошибку в программе или в системе, из-за которой программа выдает неожиданное поведение и, как следствие, результат.
Игнорирование ошибок, кстати, от всех ошибок не спасёт, если, например, ошибка будет критической.
-
Еще вот такие ошибки
Таймаут во время выполнения script for[documentRoot, css .stream-items>li] Таймаут во время выполнения exist for[documentRoot, css .stream-items>li] Таймаут во время выполнения xml for[documentRoot, css .stream-items]жду обновления пока не хочу проект переделывать изза этих ошибок
-
@gamid said in Баг с опцией "Остановить поток, если элемент не найден.":
Еще вот такие ошибки
Таймаут во время выполнения script for[documentRoot, css .stream-items>li] Таймаут во время выполнения exist for[documentRoot, css .stream-items>li] Таймаут во время выполнения xml for[documentRoot, css .stream-items]жду обновления пока не хочу проект переделывать изза этих ошибок
Хоть бы пояснил, что вызывает эти ошибки. А то у меня больше маны нет, кончилась
:D. -
@fox это мелочь)) таких мелочей десятки и ничего страшного, легко их обойти. Даже есть критичные типо неработающего акшена удалить кэш. Плюс Я недавно авторег пилил и на одном сайте стабильно вылетает браузер в режиме записи на действие "изучить элемент на странице". Я даже об этом не стал сообщать))) а тут... По поводу таймаута ошибки все те действия у которых ошибка таймаута они завёрнуты в игнор ошибок и абсолютно пофигу на разновидность ошибки поиска элемента. С ними не возникает критических ошибок.
-
@fastspace said in Баг с опцией "Остановить поток, если элемент не найден.":
@fox это мелочь)) таких мелочей десятки и ничего страшного, легко их обойти. Даже есть критичные типо неработающего акшена удалить кэш. Плюс Я недавно авторег пилил и на одном сайте стабильно вылетает браузер в режиме записи на действие "изучить элемент на странице". Я даже об этом не стал сообщать))) а тут... По поводу таймаута ошибки все те действия у которых ошибка таймаута они завёрнуты в игнор ошибок и абсолютно пофигу на разновидность ошибки поиска элемента. С ними не возникает критических ошибок.
А давай тогда вообще не будем развивать BAS, всё же и так работает?
Тему я создал преимущественно для @support 'a, так как проблему уже исправил, но исправления касаются функции из исходников BAS'a.
Саму проблему расписал понятно, подробно и открыто, чтобы её проще было исправить. Подобных тем я уже очень давно не видел на форуме (за авторством @out и @DrPrime ). Максимум информации об ошибке от форумчан это сам факт ошибки, а все подробности приходится клещами вытаскивать. -
Вот у меня в данный момент периодически вылетает с ошибкой по таймауту действие "Проверить Существование". Откуда там таймаут, если оно выполняется мгновенно?
Поток №1 : Поток завершился с сообщением "Таймаут во время выполнения exist for[documentRoot, css [href="/rating"]]" -
@lander20 Это новый баг, врятли поправят. Смирись просто.
Он возникает во много случаях, один из них когда страница еще не начала грузиться. Либо когда приходит ответ от Chromium типо ADRESS_NOT_VALID. На этих страницах тоже таймауты.
Надо чекать статус loada страницы, он поможет избежать части таких ошибок. -
@lander20 said in Баг с опцией "Остановить поток, если элемент не найден.":
Вот у меня в данный момент периодически вылетает с ошибкой по таймауту действие "Проверить Существование". Откуда там таймаут, если оно выполняется мгновенно?
Поток №1 : Поток завершился с сообщением "Таймаут во время выполнения exist for[documentRoot, css [href="/rating"]]"На сколько я помню такая ошибка могла появится при попытке обратится к странице, когда она уже сменилась. Например при использовании пагинации (когда листаешь страницы с почти одинаковым содержимым).
Можешь попробовать перед действием "Проверить существование" поставить проверку url или ожидание элемента, что бы действие было выполнено именно на целевой странице. -
@UserTrue said in Баг с опцией "Остановить поток, если элемент не найден.":
@Fox неа, подтверждаю баг. Ожидание элемента не помогает, только ждать загрузки страницы
Это на 24 версии уже? А есть ещё какие нибудь наблюдения и данные, что бы я мог повторить его?