Próbuję zrobić dokładnie to samo w Selenium i próbowałem użyć przykładu @ dave-hunt, ale jest to niepoprawna metoda na znalezienie pojedynczego elementu w kolekcji.
Rozważmy następujący przykład:
<form>
<div>
<input type="text" name="field1" />
</div>
<div>
<input type="text" name="field2" />
</div>
</form>
Jeśli użyć wyrażenia jak:
//input[@type='text'][1]
tym zwróci wszystkie wejścia tekstowych na stronie. Czemu? Ponieważ każde wejście jest pierwszym pasującym elementem w jego własnym drzewie.
Jeśli jednak użyć wyrażenia jak:
/descendant::input[@type='text'][1]
lub
/descendant::input[@type='text'][2]
pierwsze wyrażenie będzie chwycić pierwsze wejście i drugi wyraz będzie chwycić drugie wejście. Bardzo ważne jest, aby użyć pojedynczego "/", a NIE podwójnego "//".
Dzięki Dave, Santi. Mój problem polega na tym, że nie mam możliwości korzystania z klienta Selenium podczas testów jednostkowych. Niestety, jestem ograniczony do używania Selenium IDE i tabel poleceń, ale to nie znaczy, że nie byłbym w stanie uszczypnąć w niektórych JS, aby zrobić to samo. –
Jeśli rozwiążesz problem w IDE z JavaScript, prześlij swoje rozwiązanie. Byłbym zainteresowany widząc to. :) –