Как работать с коллекцией элементов?

Поддержка
  • Привет, знатоки.
    Запнулся о такой простой базовый вопрос.
    Например, мне нужно получить все теги <a> и <p> на странице (получаем коллекцию элементов) и по очереди по ним поскролить - отправить на вход функции БАС "Двигать мышь над элементом". Т.е. имеется коллекция элементов, а функция то на вход принимает селектор CSS или XPATH. И вот тут запинка. Я не могу работать с сущностью Элемент. Могу только с Селекторами.
    (В той же самой Зенке раньше так и делал - всё в одной среде - сначала получал коллекцию элементов и потом циклом её обходил. А на каждом элементе вызывал встроенный API метод Зенки. )
    Подскажите, пожалуйста, а в БАСе как это правильно реализовать?

  • @someone количество элементов, есть такой экшен но появляется он только на открытой странице в браузере, либо получаете текст страницы обрабатываете его кубиком xpath он понимает и css а затем эти селекторы ставите уже в экшен где ваша мыша двигается, но только в кубике xpath и xpath на странице селекторы разные, те что в на странице в зависимости от типа сначала ставиться >XPATH> или >CSS> а в отдельном кубике нет просто селектор как есть. экшены двигать мыш кликнуть и прочее понимают переменные, но к сожалению не поймут если это объект поэтому так VAR_YOUR_VAR.selector непоймут, а так поймут VAR_YOUR_VAR.
    апд последнее предложение не относится к апи баса там все все понимают это только кубик, но апи баса использовать напрямую разработчик не рекомендует так как накодить можно такого, и никаких гарантий на работоспособность кода разработчик не дает. Хотя тут все так и делают, это намного удобнее получается и функционал баса раскрывается еще больше

  • @lotra said in Как работать с коллекцией элементов?:

    апд последнее предложение не относится к апи баса там все все понимают это только кубик, но апи баса использовать напрямую разработчик не рекомендует так

    Спасибо, в нужном направлении отправил!
    Конечно, удобнее писать всё в коде, вот и пытаюсь понять, что можно, а что нет :)

  • @someone сначала просто копируйте кусок из кода вникнете с синтаксис начнете разбираться в механике работы поймете главное асинхронные действия в бас, это не трудно это просто нужно четко понимать будет оно или нет у каждой конкретной переменной или любым типом данных
    из апи баса происходить изменения, способ их сохранения

    учите работу асинхронного кода в бас руку набьете поймете как он работает.

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

  • ОК. Нужные элементы я могу выбрать так: >CSS>li , h3 , p , и обращаться к ним в дальнейшем по индексу >CSS>li , h3 , p >AT>2. А если мне сначала нужно проверить видимость каждого элемента на странице, а сделать это можно через Javascript в контексте браузера, то тут как поступить?

    >CSS>li , h3 , p >AT>1   ==  document.querySelectorAll("li , h3 , p")[0]
    

    Т.е. делаем привязку по индексу коллекции. Правильно думаю или есть способы лучше?

  • @someone мне бы не хотелось что бы меня ругали, на форуме достаточно примеров, а показывать тут, посмотрите на форуме прошлые года тут все уже пробовали по моему, нужно правильно формулировать запрос по форуму

  • @someone пишите то что можете, но это не отработает в браузере это в экшене выполнить код, это разные действия, для браузера а выполнить js в браузере != выполнить код, там и там не работают селекторы вашего вида я не знаю способ заставить с напрямую бас, хотя я сам не доконца знаю его я изучаю его 😁

    есть хорошая обертка для выполнить код https://community.bablosoft.com/topic/10383/плюшки-для-действия-выполнить-код

    изучайте

  • @lotra said in Как работать с коллекцией элементов?:

    @someone пишите то что можете, но это не отработает в браузере это в экшене выполнить код, это разные действия, для браузера а выполнить js в браузере != выполнить код, там и там не работают селекторы вашего вида я не знаю способ заставить с напрямую бас

    Я это знаю. Вы не правильно поняли моё решение. Ладно, не буду грузить. За ответы - спасибо!

  • @someone как скажете, но вот этот селектор >CSS>li , h3 , p >AT>1 это АПИ БАСА
    а вот это js браузера) document.querySelectorAll("li , h3 , p")[0] как вы напрямую их собираетесь сравнивать я не знаю. конечно если назвать резулт того или иного переменной и сравнивать или там или там да можно а так это то что вы написали равнозначно друг другу но каждый из селекторов для разных сред выполнения так понятнее? Я просто думаю что это >AT>1 = )[0]

  • @someone said in Как работать с коллекцией элементов?:

    Я это знаю. Вы не правильно поняли моё решение. Ладно, не буду грузить. За ответы - спасибо!

    Вот поэтому просим в дальнейшем скрипт прилагать. Это не сложно.
    Пытаться понять что не срабатывает по описаниям сообществу намного сложнее.

  • @lotra Я не буду пытаться на прямую сравнивать. Это бессмысленно :)
    Я сначала соберу массив индексов элементов в контексте браузера (действие Яваскрипт) - проверю элементы на видимость, а потом буду вызывать уже только отобранные элементы по их индексу БАС API (из массива): >CSS>li , h3 , p >AT>index
    Вроде бы, селекторы CSS точно также работают в JS, как и селекторы в API БАСа, форма представления только немного отличается.

    @lotra said in Как работать с коллекцией элементов?:

    Я просто думаю что это >AT>1 = )[0]

    Именно так я и собираюсь поступить!

  • @IvanM said in Как работать с коллекцией элементов?:

    @someone said in Как работать с коллекцией элементов?:

    Я это знаю. Вы не правильно поняли моё решение. Ладно, не буду грузить. За ответы - спасибо!

    Вот поэтому просим в дальнейшем скрипт прилагать. Это не сложно.
    Пытаться понять что не срабатывает по описаниям сообществу намного сложнее.

    Согласен. Я это учту! (просто не хотел грузить сейчас). Очень большое и искреннее спасибо за проявленное внимание к моему вопросу.