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

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 833
Баллы
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 416
Благодарностей
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 898
Благодарностей
1 586
Баллы
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 898
Благодарностей
1 586
Баллы
113
Что мешает смотреть нужные элементы просто в браузере? И там же пути проверять? За столько лет работы с ЗП отродясь в devTools в PM не лазил ))
 

SlavenTyz

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

Moonwalker

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

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