Ожидание исчезновения элемента



  • Как можно создать это действие? Вроде бы как в басе нету этой команды



  • @rustamom можно реализовать через if и Проверить Существование, обернув все в цикл.

    Или можно получать код элемента и сравнивать его с тем, что должно быть в итоге. Опять же в цикле.



  • @uraabk said in Ожидание исчезновения элемента:

    @rustamom можно реализовать через if и Проверить Существование, обернув все в цикл.

    Или можно получать код элемента и сравнивать его с тем, что должно быть в итоге. Опять же в цикле.

    Если открыть код действие "ожидание элемента", то там тоже цикл и проверка существования.



  • @rustamom через "ожидание элемента" тоже можно сделать используя xpath not() но надо сам код увидеть и посмотреть есть ли возможность сделать такое



  • Доброго времени всем! Не давно начал использовать BAS, очень понравилась. Начал писать свой первый скрипт и появилась острая нужда в функции "Ожидание исчезновения элемента", нашел несколько тем 2017 года на форуме где уважаемая @support обещали сделать такую функцию, но в BAS-е такую функцию не нашёл.

    Как можно реализовать такую функцию?



  • @Valijon said in Ожидание исчезновения элемента:

    Доброго времени всем! Не давно начал использовать BAS, очень понравилась. Начал писать свой первый скрипт и появилась острая нужда в функции "Ожидание исчезновения элемента", нашел несколько тем 2017 года на форуме где уважаемая @support обещали сделать такую функцию, но в BAS-е такую функцию не нашёл.

    Как можно реализовать такую функцию?

    Проверяйте в цикле существование элемента, и как действие вернёт false - продолжаете работу



  • @Fox читал что можно ещё через ожидание элемента сделать на Xpath not() но примера не нашёл



  • @Valijon said in Ожидание исчезновения элемента:

    @Fox читал что можно ещё через ожидание элемента сделать на Xpath not() но примера не нашёл

    Да, только вы учтите, что логическое НЕ будет находить просто все другие селекторы :D

    Например на странице выдачи гугла xpath запрос

    //div[@class="r"]
    

    выдаст 8 результатов, а тот же запрос с логиским НЕ

    //div[not(@class="r")]
    

    выдаст уже 471 результата, так как просто собирает все div, class которых не равен "r"


    Вы посмотрите код действия "ожидание элемента", точнее код функции этого действия wait_element_visible():

    function wait_element_visible() {
        var text_success = null;
        var text_fail = null;
        var func = null;
        if(arguments.length === 2)
        {
            text_success = arguments[0];
            func = arguments[1];
        }else if(arguments.length === 3)
        {
            text_success = arguments[0];
            text_fail = arguments[1];
            func = arguments[2];
        }else
        {
            die("Wrong number of arguments");
        }
    
    
        if(text_fail)
        {
            _set_result(false);
            wait(tr("Failed to wait for element ") + text_success,function(){
                _set_result(false);
                get_element_selector(_arguments()[0]).exist(function(){
                    _set_result(_result() === 1 || _result() === true);
                })
            },
            function(){
                        _set_result(false);
                        get_element_selector(_arguments()[1]).exist(function(){
                             _set_result(_result() === 1 || _result() === true);
                        })
            },[text_success,text_fail],func);
    
        }else
        {
            _set_result(false);
            wait(tr("Failed to wait for element ") + text_success, function(){
                if(BROWSERAUTOMATIONSTUDIO_WAIT_ITERATION == 8)
                    _info(tr("Waiting for element ") + text_success)
                _set_result(false);
                get_element_selector(_arguments()).script("document.readyState!='loading' && self.getBoundingClientRect().height > 0 && self.getBoundingClientRect().width > 0&& window.getComputedStyle(self)['display']!='none'&&window.getComputedStyle(self)['visibility'] != 'hidden'",function(){
                   _set_result(_result().indexOf("true")>=0);
                })
            },text_success,func);
        }
    
    }
    

    Вы можете просто скопировать весь код под другим названием функции, изменив условие выхода из цикла

    "document.readyState!='loading' && self.getBoundingClientRect().height > 0 && self.getBoundingClientRect().width > 0&& window.getComputedStyle(self)['display']!='none'&&window.getComputedStyle(self)['visibility'] != 'hidden'" //код я не менял, просто указал что надо менять
    

    и использовать эту функцию через действие "выполнить код".


    Или, всё таки использовать мой совет и сделать стандартными действиями в 4 кубика..
    a1fae81d-0b51-4cca-a164-5929a010a117-изображение.png



  • @Fox Спасибо, сделал как Вы советовали, в 4 кубика, но было бы лучше если добавили функцию "Ожидать исчезновения элемента", думаю многим бы понравилась.



  • @Valijon На каждый случай, если добавлять действия то вырастет огромный монстр. В БАС есть базовые действия которых вполне достаточно для решения любой задачи, если кому то лень то это личная половая драма. Можете в конце концов сделать свой модуль, если для вас это такая частая задача.



  • @UserTrue Вообще на каждый случай может и не надо добавлять функционал но именно эту функцию (Ожидание исчезновения элемента) уже с 2017 года в нескольких темах запрашивали. Не все новички разберутся как это реализовать базовыми действиями, а BAS рассчитан на тех кто не силен в программировании, те кто шарит в кодах он может сделать себе и модуль и функцию реализовать и здесь не задавать разных вопросов.



  • @Valijon said in Ожидание исчезновения элемента:

    Не все новички разберутся как это реализовать базовыми действиями, а BAS рассчитан на тех кто не силен в программировании, те кто шарит в кодах он может сделать себе и модуль и функцию реализовать и здесь не задавать разных вопросов.

    Модули БАС, если что пишутся на тех же кубиках и как вы выразились в кодах шарить тут не надо. И да БАС рассчитан на тех кто не силен в программирование, но если отсутствует логическое мышление, то это не спасет. Алгоритмы строить все равно надо. А хотелок тут всяких столько, что если все их реализовать то будет проще изучить программирование, чем разобраться потом во всех этих кубиках.



  • @UserTrue В этом с вами согласен, надо логику включать чтоб алгоритмы строить или по вашим стопам пойти. В другой теме по отправке капчи вы не нашли нужный функционал и изучили js



  • @Valijon said in Ожидание исчезновения элемента:

    В другой теме по отправке капчи вы не нашли нужный функционал и изучили js

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


Log in to reply