@maxsiman
На примере с файлом UserPrefs.json Выбрано так, чтобы было расширение файла.
При перемещении вместо FILENAME можно вставить исходное название файла. Для универсальности скрипта имя файла для поиска можно также задать через ресурс.
Скрипт
Данные на входе: папка в которой искать файлы и папка в которую копировать найденные
Как работать с коллекцией элементов?
-
Привет, знатоки.
Запнулся о такой простой базовый вопрос.
Например, мне нужно получить все теги <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 пишите то что можете, но это не отработает в браузере это в экшене выполнить код, это разные действия, для браузера а выполнить 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 Как работать с коллекцией элементов?:
Я это знаю. Вы не правильно поняли моё решение. Ладно, не буду грузить. За ответы - спасибо!
Вот поэтому просим в дальнейшем скрипт прилагать. Это не сложно.
Пытаться понять что не срабатывает по описаниям сообществу намного сложнее.Согласен. Я это учту! (просто не хотел грузить сейчас). Очень большое и искреннее спасибо за проявленное внимание к моему вопросу.