selectors for xpath selenium css-selectors

xpath - selectors for selenium



No se puede obtener el n-nodo en Selenio (2)

Intento escribir expresiones xpath para que mis pruebas no se rompan con pequeños cambios de diseño. Entonces, en lugar de las expresiones que genera Selenium IDE, escribo las mías.

Aquí hay un problema:

//input[@name=''question''][7]

Esta expresión no funciona en absoluto. Los nodos de entrada llamados ''pregunta'' se extienden por la página. No son hermanos.

Intenté usar expresiones intermedias, pero también falla.

(//input[@name=''question''])[2] error = Error: Element (//input[@name=''question''])[2] not found

Es por eso que supongo que Seleniun tiene una implementación incorrecta de XPath.

De acuerdo con documentos XPath , el predicado de posición debe filtrar por la posición en el conjunto de nodos , por lo que debe encontrar la séptima input con el nombre ''question'' . En Selenium, esto no funciona. Selectores CSS ( :nth-of-kind ) ninguno.

Tuve que escribir una expresión que filtra a sus padres comunes:

//*[contains(@class, ''question_section'')][7]//input[@name=''question'']

¿Es este un problema específico de Selenium, o estoy leyendo las especificaciones de manera incorrecta? ¿Qué puedo hacer para hacer una expresión más corta?


Si desea la séptima input con atributo de name con un valor de question en la fuente, intente lo siguiente:

/descendant::input[@name=''question''][7]


Aquí hay un problema:

//input[@name=''question''][7]

Esta expresión no funciona en absoluto.

Esta es una pregunta frecuente

[] tiene una prioridad más alta que // .

La expresión anterior selecciona cada elemento de input con @name = ''question'' , que es el séptimo hijo de su elemento primario, y aparentemente los elementos de input del documento que no se muestra no tienen tantos elementos secundarios de input .

Uso (tenga en cuenta los corchetes):

(//input[@name=''question''])[7]

Esto selecciona la input del 7mo elemento en el documento que satisface las condiciones en el predicado.

Editar :

Las personas que conocen el selenio (Dave Hunt) sugieren que la expresión anterior está escrita en selenio como:

xpath=(//input[@name=''question''])[7]