Селектор XPath по классу AND index

У меня есть следующий HTML:

<div>
  <p>foo</p>
  <p class='foo'>foo</p>
  <p class='foo'>foo</p>
  <p>bar</p>
</div>

Как я могу выбрать второй тег P с классом 'foo' от XPath?

Ответ 1

Следующее выражение должно сделать это:

//p[@class="foo"][2]

Изменить: использование [2] здесь выбирает элементы в соответствии с их положением среди своих братьев и сестер, а не из числа совпадающих узлов. Поскольку обе ваши таблицы являются первыми дочерними элементами своих родительских элементов, [1] будет соответствовать обоим из них, а [2] не будет соответствовать ни одному из них. Если вам нужен второй такой элемент во всем документе, вам нужно поставить выражение в скобки, чтобы [2] применил к набору узлов:

(//p[@class="foo"])[2]
(//table[@class="info"])[2]