1.15
Исправлено решение hCaptchaУмный ожидатель
-
@gomeapat said in Умный ожидатель:
А разве стандартное действие проверить существование элемента на странице не позволяет указывать timeout ?
нет, ожидание элемента позволяет
-
@olegtut said in Умный ожидатель:
Обязательно в незаполняемых полях элементов оставлять NULL. Скрипт всё равно не даёт оставлять поле пустым (старожилы, подскажите, как исправить),
Проверка в файлах ..._select.js
-
@Antonio said in Умный ожидатель:
Интересная штука. А можно пример применения?
Ну к примеру, мы ждем после ввода пароля появления либо капчи, либо подтверждения мыла, либо телефона, либо что акк заблочен и т.д. Чтобы перейти к следующему действию после ввода пароля, надо дождаться одно из этих действий. И тут у нас два варианта стандартных действий:
- Выставить задержку "спать", чтобы подгрузился один из 10 (к примеру) этих элементов. Но нет гарантии, что вы угадаете время, и вообще этот метод для плохих скриптов. Умельцы вообще не юзают "спать".
- В скрипте пришлось бы организовать бесконечный цикл, который каждый раз проверяет все 10 элементов на появление. Код становится громоздким и не очень красивым.
Для таких целей придуман модуль, который всего за один кубик кода будет ждать появление одного из 20 возможных элементов.
Где можно применять такой модуль? Чаще всего в сервисах, где есть нелинейная структура вывода html. Например, авторизация вк. В зависимости от того, насколько чист ваш браузер, вк после ввода пароля покажет вам либо капчу, либо что ваш акк заморожен, либо стартовую страницу сайта. После ввода пароля загоняем в модуль элемент с капчей, элемент о заморозке акка, элемент стартовой страницы и скрипт сам будет ждать, пока что-нибудь из этого не появится.
-
@olegtut Начну с мелких придирок
:D.- Название всех модулей BAS начинаются с заглавной буквы

- Название действия на английской локализации названо через нижнее подчёркивание "waiting_for_one"

- Описание первых двух полей действия написаны капсом

- Отсутствует английское описание действия и его полей

- Отсутствует описание для полей селекторов элементов

- Описание действия нужно дополнить более подробными примерами использования этого действия (например с тем, как использовать итоговый объект)
Теперь к более серьёзным замечаниям:
- Действие без селекторов намертво зависает, а должно выдавать ошибку при попытке сохранить такое действие

-
Вместо кучи непонятных инпутов с текстом NULL лучше создать один, который принимает массив селекторов (ну или строку с разделителем)
-
Судя по коду модуля вы его создали из функции BAS. Можете приложить проект на основании которого создали модуль? Дело в том, что в коде есть не совсем понятные места, например зачем выходить из цикла "while" меткой?

-
Опцию "ДЕЙСТВИЯ ПРИ ОБНАРУЖЕНИИ ЭЛЕМЕНТА" лучше убрать в принципе, так как действие призвано ожидать элемент, а не взаимодействовать с ним. Для удобства лучше вывести селектор, на котором сработало действие в переменную результата выполнения.
-
Если же решишь оставить опцию "ДЕЙСТВИЯ ПРИ ОБНАРУЖЕНИИ ЭЛЕМЕНТА", то лучше использовать выпадающий список с вариантами действия, чем выбор цифрами. В существующих модулях можно подсмотреть пример использования
-
@Fox Спасибо, принято. Как будет время поправлю.
Описание первых двух полей действия написаны капсом
Не планировал добавлять английскую локализацию.
Отсутствует описание для полей селекторов элементов
Ну тут тогда на всех 20-ти придется прописывать :)
Вместо кучи непонятных инпутов с текстом NULL лучше создать один, который принимает массив селекторов (ну или строку с разделителем)
Я думал над этим, но тут есть несколько камней преткновения:
- Начинающие пользователи с трудом понимают, что такое переменная и куда тыкнуть кнопочку, а уж что такое массив и как его организовать больше чем это позволено сделать в стандартном действии "список" (3 возможных поля)... Тут как минимум уже необходимо знать основы js.
- Это не всегда самому сподручно. Если элементов много, то отдельно через js необходимо создавать массив. А это плюс еще один дополнительный кубик перед модулем в скрипте.
Но с другой стороны, массив визуально выглядит минималистичнее. Пока не определился...
Судя по коду модуля вы его создали из функции BAS.
Так и есть. Я обнаружил, что стандартными действиями реализовать задуманную логику невозможно, либо громоздко, поэтому юзал еще и функции БАС.
зачем выходить из цикла "while" меткой
Я организовал вложенный цикл, просто при помощи одного break там не выйти.
Можете приложить проект на основании которого создали модуль?
Конечно. Вот он: modules v2.xml
-
Делал для себя похожее, только без return
Ждал 1 элемент
Хорошо бы добавить время сна после нахождения элемента, но по умолчанию 0
А вот "ДЕЙСТВИЯ ПРИ ОБНАРУЖЕНИИ ЭЛЕМЕНТА" я позаимствую) -
@olegtut
Попробовал модуль, интересная задумка, но не хватает некоторых функций, поэтому оказался для меня не полезным.- Параметр "Таймаут" не работает. Задаешь сколько угодно секунд, он отрабатывает все равно 90 секунд.
- Так же не хватает функции эмуляции "Тач-событий", а не только мыши.
- Плюс как сказал @mansory333 было бы классно задавать паузу (или чтение) после нахождения элемента.
Тогда один кубик решал бы почти все задачи. А то сейчас оформляя все через IF и For выглядит все некрасиво :(
-
@super84 @mansory333
В шапке темы, откройте внизу спойлер Ver. 2.0
