@Fox Спасибо большое
Возможно ли получить количество элементов, которые кликабельны на всей странице?
-
Например, когда пишешь xpath по атрибуту href, то находятся все ссылки, которые есть в коде страницы, но некоторые из них на экране появляются только после наведения мыши куда-либо. Соответственно движение мыши по такому элементу закончится с ошибкой. Как можно это обойти?
-
@senerg said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
Например, когда пишешь xpath по атрибуту href, то находятся все ссылки, которые есть в коде страницы, но некоторые из них на экране появляются только после наведения мыши куда-либо. Соответственно движение мыши по такому элементу закончится с ошибкой. Как можно это обойти?
Получи все ссылки, а затем циклом пройдись по всем с проверкой на существование с галочкой "Проверять, виден ли элемент на экране". Но действиями BAS будет долго, быстро будет на чистом js но алгоритм тот же.
-
@fox said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
"Проверять, виден ли элемент на экране". Но действиями BAS будет долго, быстро будет на чистом js но алгоритм тот же.
Что из этого:
;_SELECTOR=" \u003eXPATH\u003e //a[contains(@href, \u0022/\u0022)]"; get_element_selector(_SELECTOR, false).nowait().exist()! VAR_IS_EXISTS = _result() == 1 _if(VAR_IS_EXISTS, function(){ get_element_selector(_SELECTOR, false).nowait().style("display")! STYLE_DISPLAY = _result() get_element_selector(_SELECTOR, false).nowait().style("visibility")! STYLE2_DISPLAY = _result() get_element_selector(_SELECTOR, false).nowait().script("self.getBoundingClientRect().height")! STYLE_HEIGHT = _result() get_element_selector(_SELECTOR, false).nowait().script("self.getBoundingClientRect().width")! STYLE_WIDTH = _result() VAR_IS_EXISTS = STYLE_DISPLAY != "none" && STYLE2_DISPLAY != "hidden" && STYLE_HEIGHT != "0" && STYLE_WIDTH != "0" })!отвечает за галочку "Проверять, виден ли элемент на экране"? Не пойму куда список ссылок подставлять.
-
@senerg said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
@fox said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
"Проверять, виден ли элемент на экране". Но действиями BAS будет долго, быстро будет на чистом js но алгоритм тот же.
Что из этого:
;_SELECTOR=" \u003eXPATH\u003e //a[contains(@href, \u0022/\u0022"; get_element_selector(_SELECTOR, false).nowait().exist()! VAR_IS_EXISTS = _result() == 1 _if(VAR_IS_EXISTS, function(){ get_element_selector(_SELECTOR, false).nowait().style("display")! STYLE_DISPLAY = _result() get_element_selector(_SELECTOR, false).nowait().style("visibility")! STYLE2_DISPLAY = _result() get_element_selector(_SELECTOR, false).nowait().script("self.getBoundingClientRect().height")! STYLE_HEIGHT = _result() get_element_selector(_SELECTOR, false).nowait().script("self.getBoundingClientRect().width")! STYLE_WIDTH = _result() VAR_IS_EXISTS = STYLE_DISPLAY != "none" && STYLE2_DISPLAY != "hidden" && STYLE_HEIGHT != "0" && STYLE_WIDTH != "0" })!отвечает за галочку "Проверять, виден ли элемент на экране"?
Это api BAS а не чистый js. Присмотритесь, здесь 4 условия И, только если будут выполнены все, результат вернёт true
-
@senerg said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
Не пойму куда список ссылок подставлять.
Список ссылок лучше проверять через foreach стандартными действиями BAS. Все действия в этом api асинхронные и простой for с ними работать не будет.
@senerg said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
@fox но здесь _SELECTOR. Как вместо него список подставить, он же как я понимаю только xpath принимает?
Объясните мне, что вы хотите сделать? Я же говорил, что использования стандартных действий или api BAS всё равно будет работать медленно. "Выполнить код" здесь не спасёт. Если хотите быструю проверку всех ссылок, пишите алгоритм на js и используйте его в действии "яварскипт"
-
@fox said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
алгоритм на js и используйте его в действии "яварскипт"
На js я не знаю как проверить видимость элемента.
Или вот это вы имели в виду?
var isVisible = element.offsetWidth > 0 || element.offsetHeight > 0; -
@senerg said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
@fox said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
алгоритм на js и используйте его в действии "яварскипт"
На js я не знаю как проверить видимость элемента.
Вы же скинули открытый код, в нём есть 4 метода на яваскрипте:
.style("display") .style("visibility") .getBoundingClientRect().height .getBoundingClientRect().widthЗагуглите каждый из них, чтобы понять, что они делают. Затем найдите нужные элементы и примените к ним эти методы, в зависимости от условий выводите в результат, что хотите получить. Как получится хотя бы с одним элементом, добавляйте цикл с проверкой всех элементов.
-
И еще надо проверять не перекрыт ли выбранный элемент другим. Это делается так: 1. Получаем координаты элемента по которому хотим кликнуть 2. Получаем элемент которой находится по этим координатам, если это то же самый то можно кликать
-
@usertrue said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
И еще надо проверять не перекрыт ли выбранный элемент другим. Это делается так: 1. Получаем координаты элемента по которому хотим кликнуть 2. Получаем элемент которой находится по этим координатам, если это то же самый то можно кликать
Я бы добавил циклическую проверку по сетке элемента (хотя бы через какой то промежуток), а то при первой проверке мы получим только один левый верхний пиксель, а остальная часть элемента может быть закрыта, или частично перекрыта.
-
@senerg said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
Загуглил. Что это и как использовать яснее не стало. Может есть какой пример похожий работающий?
Искать надо не на форуме, а вообще везде. Примера нет. Пробуйте, пишите, экспериментируйте.
-
@UserTrue said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
И еще надо проверять не перекрыт ли выбранный элемент другим. Это делается так: 1. Получаем координаты элемента по которому хотим кликнуть 2. Получаем элемент которой находится по этим координатам, если это то же самый то можно кликать
А какова вероятность перекрытия если он отдает ширину и высоту элемента ?
Я имею ввиду, если убить всплывающие попапы скажем с z-index больше определенного, то врядли же там слоенный пирог ?Или все же встречаются ?
И если да, то пример не приведешь этой проверки ?
-
@Bigma said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
@UserTrue said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
И еще надо проверять не перекрыт ли выбранный элемент другим. Это делается так: 1. Получаем координаты элемента по которому хотим кликнуть 2. Получаем элемент которой находится по этим координатам, если это то же самый то можно кликать
А какова вероятность перекрытия если он отдает ширину и высоту элемента ?
Я имею ввиду, если убить всплывающие попапы скажем с z-index больше определенного, то врядли же там слоенный пирог ?Или все же встречаются ?
На странице может быть что угодно, например при использовании бесплатного прокси на страницу будет загружен червяк, который генерирует каждые 10 миллисекунд прозрачный элемент над каждым кликабельным элементом страницы для перенаправления вас на фишингувую ссылку.
И если да, то пример не приведешь этой проверки ?
Можете изменить условие проверки из примера на условие проверки видимости элемента
https://community.bablosoft.com/topic/10710/модальные-окна-как-их-обрабатывать/12
-
@Bigma said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
@UserTrue said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
И еще надо проверять не перекрыт ли выбранный элемент другим. Это делается так: 1. Получаем координаты элемента по которому хотим кликнуть 2. Получаем элемент которой находится по этим координатам, если это то же самый то можно кликать
А какова вероятность перекрытия если он отдает ширину и высоту элемента ?
Я имею ввиду, если убить всплывающие попапы скажем с z-index больше определенного, то врядли же там слоенный пирог ?Или все же встречаются ?
И если да, то пример не приведешь этой проверки ?
Можешь туда не смотреть даже, там шлак.
Нормальный код который ищет кликабельный элемент без перекрытия, видимый и еще 100500 миллион приколов никто за даром не отдаст. Да и на всем форуме он есть от силы у 3-4 человек.
Заказывай на фрилансе, но готов деньгю не малую и куча нервов, чтобы фрилансеру обьяснить все случаи что может пойти не так. -
@FastSpace спасибо за совет, пару дней дай, напишу и выложу.
-
@Bigma said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
@FastSpace спасибо за совет, пару дней дай, напишу и выложу.
Ок
Тут в соседней теме чел зажлобил 15$ за конвертер куков. Тоже обещал скрафтить за пол часа и пропал 😆 -
@FastSpace said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
@Bigma said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
@FastSpace спасибо за совет, пару дней дай, напишу и выложу.
Ок
Тут в соседней теме чел зажлобил 15$ за конвертер куков. Тоже обещал скрафтить за пол часа и пропал 😆там особо то и делать нечего, другой вопрос, что этой инфы на этом форуме и быть не должно. Не для того Мамка дитятку холила и лелеяла. Сам знаешь для чего это используют.
-
@Bigma said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
@FastSpace said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
@Bigma said in Возможно ли получить количество элементов, которые кликабельны на всей странице?:
@FastSpace спасибо за совет, пару дней дай, напишу и выложу.
Ок
Тут в соседней теме чел зажлобил 15$ за конвертер куков. Тоже обещал скрафтить за пол часа и пропал 😆там особо то и делать нечего, другой вопрос, что этой инфы на этом форуме и быть не должно. Не для того Мамка дидятку холила и лелеяла. Сам знаешь для чего это используют.
По элементам подскажу. Надо искать у которых рука с пальцем.
-
@FastSpace чего сь ? Я основную логику на js уже написал, с перекрытием - опция.
@UserTrue мог бы детальнее подсказать, как он это решил.