Estoy tratando de hacer exactamente lo mismo en Selenium e intenté usar el ejemplo de @ dave-hunt, pero es un método incorrecto para encontrar un elemento individual en una colección.
Consideremos el siguiente ejemplo:
<form>
<div>
<input type="text" name="field1" />
</div>
<div>
<input type="text" name="field2" />
</div>
</form>
Si utiliza una expresión como:
//input[@type='text'][1]
Esto devolverá todas las entradas de texto en la página. ¿Por qué? Porque cada entrada es el primer elemento coincidente dentro de su propio árbol.
Sin embargo, si se utiliza una expresión como:
/descendant::input[@type='text'][1]
o
/descendant::input[@type='text'][2]
la primera expresión se agarra la primera entrada y la segunda expresión se agarra la segunda entrada. Es muy importante que use un solo "/" y NO un doble "//".
Gracias a Dave, Santi. Mi problema es que no tengo una opción para usar el cliente de Selenium en pruebas unitarias. Desafortunadamente, estoy limitado a usar el Selenium IDE y las tablas de comandos, pero esto no significa que no pueda pellizcar algunos JS para hacer lo mismo. –
Si lo resuelve en IDE con JavaScript envíe su solución. Me interesaría verlo. :) –