Как искать node путем точного совпадения текста с помощью Xpath в webdriver
Мне нужна небольшая помощь в поиске точного текста с использованием xpath в webDriver.
Предположим, что я имеет html следующим образом.
<html><body>
<table>
<tr>
<td><button>abcd</button></td>
<td><button>abc</button></td>
</tr>
</table>
</body></html>
Теперь я хочу нажать кнопку "abc"
Я использовал xpath как //button[contains(text(),'abc')]
, но он всегда выступает на кнопке "abcd", так как он также содержит текст "abc" . В этом отношении мне нужен предикат или какая-то другая процедура, которая может искать точный текст вместо текста.
Я также пробовал использовать //button[matches(text(),'abc')]
, //button[matches($string,'abc')]
, //button[Text='abc')]
, //button[.='abc')]
и многие другие, но ни одна из них не была разработана для идентификации кнопки "abc" .
Я не знаю, есть ли какие-либо проблемы относительно моей версии xpath, поскольку я не знаю о версии. Но я использую java 1.6 JDK.
Хотя мой точный сценарий не является примером, но должна применяться аналогичная логика.
Следовательно, любая помощь или предложение будут высоко оценены.
Ответы
Ответ 1
Я бы использовал следующий xpath //button[text()='abc']
. Вы упомянули функцию text()
, но я не уверен, что синтаксис верен. Также вы пытались использовать contains()
- он ищет частичный текст, и WebDriver получает первый найденный элемент. В вашем случае это кнопка <button>abcd</button>
Ответ 2
//button[.="abc"]
Точка перед оператором равенства выполнит сравнение текста. Другой пример - /PROJECT[.="MyProject"]
из учебника по Java xPath.
Ответ 3
Попробуйте с концами-вместо вместо них. Если кнопки не имеют уникальных атрибутов, вы можете также добавить родительскую иерархию. Как //table/tr/td [1].
Ответ 4
Чтобы найти элемент 'abcd', вы можете просто использовать:
//button[contains(text(),'abcd')]
Чтобы найти 'abc', используйте функцию normalize-space(), которая очистит ваш текст для сравнения.
//button[normalize-space(text())='abc']
Ответ 5
Для точного поиска:
button[text()='abc']
Для поиска по шаблону:
button[starts-with(.,'abc')]