XPath использует имя класса и содержит текст

Я искал ответ на вопрос, как найти элемент, который имеет класс и содержит текст.

У меня есть два ответа.

Для меня сработал только второй ответ. Может ли кто-нибудь объяснить разницу для части «содержит текст»? Поскольку оба ответа не упоминают об этом.


person Hesoti    schedule 21.08.2020    source источник


Ответы (1)


Для демонстрации рассмотрим следующий HTML:

<div class="credit_summary_item">Professor</div>

Есть:

  • Только одно значение атрибута класса, то есть credit_summary_item.
  • А innerText, то есть Professor, не содержит начальных и конечных пробелов.

Итак, чтобы найти этот элемент, вы можете использовать одно из следующих решений:

  • Использование text():

    //div[@class='credit_summary_item' and text()='Professor']
    
  • Использование contains():

    //div[@class='credit_summary_item' and contains(., 'Professor')]
    

Этот вариант использования

Но в вашем случае кажется, что contains(@class, 'credit_summary_item') работает, что подразумевает, что элемент имеет несколько классов. Таким образом, помимо credit_summary_item в качестве атрибутов класса присутствуют некоторые другие значения.

person DebanjanB    schedule 21.08.2020
comment
Я запутался между «содержит (., '')» и text () = ''. Теперь понял. Спасибо - person Hesoti; 22.08.2020