короче полностью разобрался в этом вопросе
всё что выше - не правильное решение. Если кто желает обмазаться пониманием того как на самом деле работает, предикат last() и [0] рекомендую поиграться вот тут например: http://xpather.com/
код для примера:
<div>
<input>
<input>
<div>
<input>
<div>
<input>
<input>
<div>
<input>
<input>
<input>
</div>
<input>
</div>
<input>
<input>
</div>
</div>
Правильным решением моего вопроса оказалось вот такое решение (обратите внимание на круглые скобки):
(//div//input)[last()]
То есть мы сначала выбираем все инпуты на странице, а потом ко всей выборке применяем предикат last()
Разница между
//div//input[last()]
в том, что крайний пример выберет все последние инпуты во всех последних контейнерах. То есть их будет несколько. В то время как круглые скобки указывают сначала сделать выборку по всем инпутам, на странице, а потом уже среди них взять самый последний.
Мало ли кому пригодится мой опыт.