Я думаю, что вы хотите
(//div[@class="title"])[1]/a
Это:
//div[@class="title"][1]/a
выбирает все (<a>
элементы, которые являются потомками) <div>
элементов, которые имеют @class
из 'title'
, которые являются первыми дочерними элементами их родителей (в этом контексте). Это означает: он выбирает всех из них.
Рабочий XPath выбирает все элементы <div>
, которые имеют @class
из 'title'
, и из них он выбирает первый.
Предикаты (выражения в квадратных скобках []
) применяются к каждому элементу, который соответствует предыдущему шагу расположения (т. Е. "//div"
) индивидуально . Чтобы применить предикат к отфильтрованному набору узлов, необходимо очистить группировку в скобках.
Следовательно, это:
//div[1][@class="title"]/a
выберет все элементы <div>
, возьмет первый и затем отфильтрует его, проверив значение @class
. Также не то, что вы хотите. ; -)