У меня есть этот div:
<div class="product-name">Product1</div>
У меня также есть этот div:
<div class="product-name gold">Product2</div>
Как я могу изменить этот запрос xpath для получения любых div, содержащих имя продукта? Вместо получения точного соответствия.
/html/body//div[@class='product-name']
Я googled это, но все, что я мог найти, это то, как использовать contains
при поиске значения в узле, а не атрибут.
РЕДАКТИРОВАТЬ
Вы можете использовать contains()
:
/html/body//div[contains(@class, 'product-name')]
Обновить:
Как отмечает @Alejandro в своем комментарии, это также будет соответствовать любому классу, содержащему product-name
. См. Его ответ на решение XPath 1.0 .
Если вы используете XPath 2.0, вы также можете сделать это:
/html/body//div[exists(index-of(tokenize(@class, "\s+"), "product-name"))]
Классический ответ XPath 1.0 для этого существующего теста на последовательность:
/html/body//div[ contains( concat(' ',normalize-space(@class),' '), ' product-name ' ) ]
/html/body//div[contains(@class,'product-name')]
Атрибуты также являются узлами, они называются узлами атрибутов.