Умный ожидатель

Делитесь модулями
  • @Antonio said in Умный ожидатель:

    @olegtut , потом получаем из модуля значение, какой именно элемент появился и уже через if какие-то действия выполняем?

    Всё верно.

  • В качестве пожелания на будущие апдейты модуля:
    если это возможно, добавить количество найденных элементов в интерфейс. По аналогии с "Ждать появления элемента".
    Такой счетчик сильно облегчает написание селектора.

  • @olegtut Начну с мелких придирок :D.

    • Название всех модулей BAS начинаются с заглавной буквы

    9a0c9c95-dc8b-4759-8330-b9cc78d8ac6f-изображение.png

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

    e7987b29-dbc3-4cbc-9b30-9108daf8861a-изображение.png

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

    7afd6035-118f-453e-a984-a2d959ce1c5a-изображение.png

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

    f633735e-6907-4eb6-9c40-05839a0747f4-изображение.png

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

    06546221-0321-4856-bb95-1860d559ed1b-изображение.png

    • Описание действия нужно дополнить более подробными примерами использования этого действия (например с тем, как использовать итоговый объект)

    Теперь к более серьёзным замечаниям:

    • Действие без селекторов намертво зависает, а должно выдавать ошибку при попытке сохранить такое действие

    support823.gif

    • Вместо кучи непонятных инпутов с текстом NULL лучше создать один, который принимает массив селекторов (ну или строку с разделителем)

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

    d9b494ec-21d2-4f61-8a27-eda963012354-изображение.png

    • Опцию "ДЕЙСТВИЯ ПРИ ОБНАРУЖЕНИИ ЭЛЕМЕНТА" лучше убрать в принципе, так как действие призвано ожидать элемент, а не взаимодействовать с ним. Для удобства лучше вывести селектор, на котором сработало действие в переменную результата выполнения.

    • Если же решишь оставить опцию "ДЕЙСТВИЯ ПРИ ОБНАРУЖЕНИИ ЭЛЕМЕНТА", то лучше использовать выпадающий список с вариантами действия, чем выбор цифрами. В существующих модулях можно подсмотреть пример использования

  • @Fox Спасибо, принято. Как будет время поправлю.

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

    Не планировал добавлять английскую локализацию.

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

    Ну тут тогда на всех 20-ти придется прописывать :)

    Вместо кучи непонятных инпутов с текстом NULL лучше создать один, который принимает массив селекторов (ну или строку с разделителем)

    Я думал над этим, но тут есть несколько камней преткновения:

    1. Начинающие пользователи с трудом понимают, что такое переменная и куда тыкнуть кнопочку, а уж что такое массив и как его организовать больше чем это позволено сделать в стандартном действии "список" (3 возможных поля)... Тут как минимум уже необходимо знать основы js.
    2. Это не всегда самому сподручно. Если элементов много, то отдельно через js необходимо создавать массив. А это плюс еще один дополнительный кубик перед модулем в скрипте.
      Но с другой стороны, массив визуально выглядит минималистичнее. Пока не определился...

    Судя по коду модуля вы его создали из функции BAS.

    Так и есть. Я обнаружил, что стандартными действиями реализовать задуманную логику невозможно, либо громоздко, поэтому юзал еще и функции БАС.

    зачем выходить из цикла "while" меткой

    Я организовал вложенный цикл, просто при помощи одного break там не выйти.

    Можете приложить проект на основании которого создали модуль?

    Конечно. Вот он: modules v2.xml

  • Эту систему очень сложно понять. Я надеюсь, что придет объяснение на английском. Любое видео нужно. Я не мог добавить его в свое приложение: /

  • Спасибо. Удобный и хорошечный модуль.

  • @olegtut планируете какие-либо обновления модуля? Очень полезная штука

  • Делал для себя похожее, только без return
    Ждал 1 элемент
    Хорошо бы добавить время сна после нахождения элемента, но по умолчанию 0
    А вот "ДЕЙСТВИЯ ПРИ ОБНАРУЖЕНИИ ЭЛЕМЕНТА" я позаимствую)

  • @olegtut
    Попробовал модуль, интересная задумка, но не хватает некоторых функций, поэтому оказался для меня не полезным.

    1. Параметр "Таймаут" не работает. Задаешь сколько угодно секунд, он отрабатывает все равно 90 секунд.
    2. Так же не хватает функции эмуляции "Тач-событий", а не только мыши.
    3. Плюс как сказал @mansory333 было бы классно задавать паузу (или чтение) после нахождения элемента.
      Тогда один кубик решал бы почти все задачи. А то сейчас оформляя все через IF и For выглядит все некрасиво :(
  • @Antonz
    Планирую. Для себя уже сделал другую версию, но всё еще не найду время выкатить сюда :)

  • Обновил модуль до второй версии.

  • @olegtut Чёт так же и ставится 1.0 версия.
    Ссылку забыл мож обновить :)
    bffff306-f493-4136-ab65-6be7862a1799-image.png

  • @olegtut Если не сложно можете прикрепить обновленный проект?

  • @super84 @mansory333

    В шапке темы, откройте внизу спойлер Ver. 2.0

  • @spacerange Ёптить :)))
    Чёт реально, внизу то глянуть и забыл :)

  • @spacerange я про xml-проект модуля

  • @mansory333
    Да, могу. modules v3.xml
    Функция называется waiting_for_one_v2 . Скрипт часто использует js для определения объектов и некоторых условных операций с нативными функциями БАС. Если для образовательных целей, то могу, если непонятно будет, объяснить, какой блок за что отвечает.

  • Сегодня первый раз использовал модуль, очень помогает в ситуации когда селектор меняется в зависимости от
    определенной ситуации и приходится городить конструкции if exist-click, потом использовать метку для выхода из этой конструкции, чтобы случайно не сработал повторный клик, если и второй селектор совпадет. Данный модуль просто пушка, автору респект.

  • @serrgo said in Умный ожидатель:

    Сегодня первый раз использовал модуль, очень помогает в ситуации когда селектор меняется в зависимости от
    определенной ситуации и приходится городить конструкции if exist-click, потом использовать метку для выхода из этой конструкции, чтобы случайно не сработал повторный клик, если и второй селектор совпадет. Данный модуль просто пушка, автору респект.

    В таких случаях лучше использовать xpath, что бы создать универсальный селектор. Ведь xpath поддерживает логические операторы: селектор 1 || селектор 2 || селектор 3

    Если xpath слишком сложен, то можно использовать список селекторов и цикл с проверкой существования

  • @Fox В моей ситуации селекторы у одного элемента были разных типов(xpath который я сам составлял и css который я составлять не умею), плюс к этому данный модуль позволяет в одном действии организовать и проверку и действие с элементом. Так что мои рекомендации и респекты автору остаются в силе)