Идентификация элементов на сайте

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 159
Благодарностей
37
Баллы
48
Многие из нас сталкивались с сайтами где идентификация элементов затруднена и приходится открывать инструменты web-разработчика, но там тоже сильное различие от Дерева Элементов. При этом в "инструментt web-разработчика", то же сложновсти найти, например Мышкой приходится дергать от элемента на сайте и нужным злементом в этом инструменте.

Короче, может я не правильно использую, может какие не будь лайфаки имеются, возможно разработчики что то в будущем могут изменить?.

Но имеются у меня реальные сложности с Идентификацией элементов, что там виснет, то с поиском нужного XPhath пути и т.д. Сайты постоянно меняются, и на многих виснет система с Идентификацией элементов. Что посоветуете
 

lancerok

Пользователь
Регистрация
03.01.2022
Сообщения
93
Благодарностей
51
Баллы
18
Opencv
А там уже по координатам.
 

samsonnn

Client
Регистрация
02.06.2015
Сообщения
2 034
Благодарностей
1 834
Баллы
113
Opencv
А там уже по координатам.
Нет, не так. Есть более надежный и гуманный метод с помощью ИИ.

Многие из нас сталкивались с сайтами где идентификация элементов затруднена и приходится открывать инструменты web-разработчика, но там тоже сильное различие от Дерева Элементов. При этом в "инструментt web-разработчика", то же сложновсти найти, например Мышкой приходится дергать от элемента на сайте и нужным злементом в этом инструменте.

Короче, может я не правильно использую, может какие не будь лайфаки имеются, возможно разработчики что то в будущем могут изменить?.

Но имеются у меня реальные сложности с Идентификацией элементов, что там виснет, то с поиском нужного XPhath пути и т.д. Сайты постоянно меняются, и на многих виснет система с Идентификацией элементов. Что посоветуете
1. Открываем инструмент разработчика в Project Maker.
2. Копируем нужный элемент кода.
3. Переходим в ChatGPT скармливаем ему этот код с просьбой составить нам самый короткий и устойчивый xPath.
Вот и весь лайфхак.
 
  • Спасибо
Реакции: 6585_Лягуша

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 159
Благодарностей
37
Баллы
48
Спасибо, но бывают и с этим сложности. Интересно в ЗенноПостере будут реализованы надежные инструменты индетификации элемента на сайте, бывает подвисают системы
 

Dmitriy_Zenno

Administrator
Регистрация
28.10.2025
Сообщения
312
Благодарностей
114
Баллы
43
Многие из нас сталкивались с сайтами где идентификация элементов затруднена и приходится открывать инструменты web-разработчика, но там тоже сильное различие от Дерева Элементов. При этом в "инструментt web-разработчика", то же сложновсти найти, например Мышкой приходится дергать от элемента на сайте и нужным злементом в этом инструменте.

Короче, может я не правильно использую, может какие не будь лайфаки имеются, возможно разработчики что то в будущем могут изменить?.

Но имеются у меня реальные сложности с Идентификацией элементов, что там виснет, то с поиском нужного XPhath пути и т.д. Сайты постоянно меняются, и на многих виснет система с Идентификацией элементов. Что посоветуете
Я бы вам посоветовал освоить работу с xPath. Вот есть неплохая статья Учимся искать элементы с помощью xpath.
На первый взгляд он может показаться сложным, но на самом деле он даже проще, чем Регулярные выражения.

90% элементов можно находить таким шаблоном, меняя только тег и атрибуты под нужные элементы:
C#:
//div[contains(@class, 'btn')]
 

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 421
Благодарностей
958
Баллы
113
реализованы надежные инструменты индетификации элемента
Сложно придумать что то надежнее xpath. Просто надо разобраться в нем. Например когда кажется что незачто зацепится, можно выстраивать цепочки типа "Найти элемент-перейти к его родителю-взять третий элемент выше-найти в нем тег-отступить ниже на три тега". Очень гибкая штука. Но, как сказали выше, почти всегда достаточно элементарного.
ЗЫ не пугайся того что под спойлером, такое почти никогда не надо)

Сгенерируй како то очень сложный xpath для демонстрации его мощи и коротко опиши его
Код:
//div[
  contains(concat(' ', normalize-space(@class), ' '), ' product ')
  and
  .//span[
    matches(normalize-space(.), '^(Premium|VIP)\s+Item$', 'i')
  ]
  and
  count(
    .//a[
      starts-with(@href, 'https')
      and not(contains(@href, 'tracking'))
    ]
  ) >= 3
  and
  not(
    ancestor::div[
      @data-disabled = 'true'
      or contains(@style, 'display:none')
    ]
  )
]
/descendant-or-self::div[
  position() = last()
]
/following-sibling::*[
  self::script or self::style
][1]
Короткое объяснение, что здесь происходит

Этот XPath:


  1. Ищет div с классом product
    (корректно, через normalize-space + concat, а не наивный contains(@class))
  2. Проверяет наличие вложенного span,
    где текст строго соответствует Premium Item или VIP Item
    (с использованием регулярных выражений matches(), XPath 2.0+)
  3. Считает количество ссылок <a> внутри блока:
    • только https
    • без tracking в URL
      → должно быть не меньше 3
  4. Исключает скрытые или отключённые элементы:
    • родитель с data-disabled="true"
    • или display:none
  5. Переходит к последнему div внутри найденного блока
  6. Берёт первый следующий script или style после него

Почему это «мощно»

  • Использует:
    • ancestor, descendant-or-self, following-sibling
    • логические комбинации
    • регулярные выражения
    • подсчёт элементов (count)
    • защиту от ложных совпадений классов
  • Такой XPath заменяет сложную логику в коде (циклы + условия)
 
  • Спасибо
Реакции: Moonwalker

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 899
Благодарностей
1 587
Баллы
113
Поддержу. Правильно составленный xpath - гарантия нахождения элемента. Если дальше проблема с ним взаимодействовать, то это не проблема элемента, это проблема уже Зенки или чего-то другого.
 
Последнее редактирование:

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 159
Благодарностей
37
Баллы
48
Я бы вам посоветовал освоить работу с xPath. Вот есть неплохая статья Учимся искать элементы с помощью xpath.
На первый взгляд он может показаться сложным, но на самом деле он даже проще, чем Регулярные выражения.

90% элементов можно находить таким шаблоном, меняя только тег и атрибуты под нужные элементы:
C#:
//div[contains(@class, 'btn')]
Я и работаю только через XPath, но сложность в том что в ProjectMarket в дерево элементов не всегда показывает элементы, и инструмент разработчиков то же подвисает
вот например сайт, да где то быстро определяет элементы, а где то настоящая проблема https://vprognoze.ru
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 899
Благодарностей
1 587
Баллы
113
Что мешает смотреть нужные элементы просто в браузере? И там же пути проверять? За столько лет работы с ЗП отродясь в devTools в PM не лазил ))
 

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 159
Благодарностей
37
Баллы
48
Что мешает смотреть нужные элементы просто в браузере? И там же пути проверять? За столько лет работы с ЗП отродясь в devTools в PM не лазил ))
Это это то же самое, что и инструмент разработчика и он не удобен и подвисает и во вторых хочется иметь удобные инструменты в одном месте, а вы предлагаете костыли
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 899
Благодарностей
1 587
Баллы
113
Не знаю, что там может подвисать, если честно. Подвисать может только загрузка страницы в браузере, в devtools код уже загруженной страницы. Про костыли - смешно )) Это как говорить, мол, "почему для Зенки еще и интернет нужен, почему его там встроенного нет". Но если нужны шашечки, а не ехать, то да, согласен, пусть все будет из коробки ))) И желательно, само еще...
В общем, возвращаясь к первоначальному сообщению: правильный xPath - гарантия результата. Но для этого его придется подучить (ну или хотя бы логику понять и знать, куда подсмотреть или где спросить).
 
Последнее редактирование:
  • Спасибо
Реакции: Dr.Pipetka

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 421
Благодарностей
958
Баллы
113
DevTools это инструмент разработчика от хрома, он в любом браузере одинаковый(мб немного +-). Круче ничего нет (мб что то не знаю). В зенке реализовано через костыль, как в принципе и вся нынешняя зенка. В одной версии работает одно, в другой не другое. 139069 вот так выглядит набор ~стабильной работы. Но, что касается xpath, в инструментах все работает норм(если выбрать нужную версию, нужный монитор, нужное масштабирование винды, нужное разрешение экрана). Как и в обычном браузере.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 976
Благодарностей
1 303
Баллы
113
DevTools это инструмент разработчика от хрома, он в любом браузере одинаковый(мб немного +-). Круче ничего нет (мб что то не знаю). В зенке реализовано через костыль, как в принципе и вся нынешняя зенка. В одной версии работает одно, в другой не другое. Посмотреть вложение 139069 вот так выглядит набор ~стабильной работы. Но, что касается xpath, в инструментах все работает норм(если выбрать нужную версию, нужный монитор, нужное масштабирование винды, нужное разрешение экрана). Как и в обычном браузере.
Это ты столько копий держишь?
 

Dr.Pipetka

Client
Регистрация
12.12.2017
Сообщения
1 421
Благодарностей
958
Баллы
113
Это ты столько копий держишь?
Ну так приходится. В каждой свои приколы. В какой то клики не работаю, а в какой то девтулс. Было такое что сайты "неадекватно" работали и приходилось понижать версию (что очень странно). В большинстве случаев конечно пользуюсь последней.
 

henry88

Client
Регистрация
31.12.2018
Сообщения
88
Благодарностей
30
Баллы
18
Это связано с тем, что многие веб-сайты используют технологию Shadow DOM(Shadow Root) , которая делает невозможным извлечение элементов. Эта проблема существует уже много лет, и ZennoPoster не может реализовать эту функцию из коробки. На форумах есть несколько сообщений, в которых подробно описаны обходные пути с использованием кода JavaScript.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)