Я пытаюсь сделать то же самое в Selenium и попытался использовать пример @ dave-hunt, но это неправильный метод поиска отдельного элемента в коллекции.
Рассмотрим следующий пример:
<form>
<div>
<input type="text" name="field1" />
</div>
<div>
<input type="text" name="field2" />
</div>
</form>
Если вы используете выражение вроде:
//input[@type='text'][1]
это вернет все текстовые вводы на странице. Зачем? Потому что каждый вход является первым соответствующим элементом в своем собственном дереве.
Однако, если вы используете выражение вроде:
/descendant::input[@type='text'][1]
или
/descendant::input[@type='text'][2]
первое выражение захватит первый ввод, а второе выражение захватит второй ввод. Очень важно, чтобы вы использовали один "/", а НЕ двойной "//".