w3school sintaxis operator online examples and xpath selenium

sintaxis - ¿Cómo seleccionar el nodo especificado dentro de los conjuntos de nodos Xpath por índice con Selenium?



xpath sintaxis (4)

(// * [@ attribute = ''value'']) [index] para encontrar el objetivo del elemento mientras encuentras múltiples coincidencias en él

Estoy escribiendo un caso de prueba de Selenium. Y aquí está la expresión xpath que uso para unir todos los botones ''Modificar'' dentro de una tabla de datos.

//img[@title=''Modify'']

Mi pregunta es, ¿cómo puedo visitar los conjuntos de nodos coincidentes por índice? Lo he intentado con

//img[@title=''Modify''][i]

y

//img[@title=''Modify'' and position() = i]

Pero ninguno funciona .. También probé con XPath checker (Una extensión de Firefox). Hay totalmente 13 coincidencias encontradas, entonces no tengo ni idea de cómo voy a seleccionar una de ellas ... ¿ O XPath admite la selección especificada de nodos que no están en el mismo nodo padre?


No hay i en XPath.

O bien usa números literales: //img[@title=''Modify''][1]

O construye la cadena de expresión de forma dinámica: ''//img[@title=''Modify''][''+i+'']'' (pero tenga en cuenta que las expresiones XPath dinámicas no funcionan desde dentro de XSLT).

¿O XPath admite la selección especificada de nodos que no están en el mismo nodo padre?

Sí: (//img[@title=''Modify''])[13]

Este //img[@title=''Modify''][i] significa "cualquier <img> con un título de ''Modificar'' y un elemento secundario llamado <i> ."


Esta es una pregunta frecuente :

//someName[3]

significa : todos los elementos de algunos someName en el documento, que son el tercer someName secundario de su hijo principal, puede haber muchos de estos elementos.

Lo que quieres es exactamente el tercer elemento de someName :

(//someName)[3]

Explicación : el [] tiene una precedencia (prioridad) más alta que // . Recuerde siempre poner expresiones de tipo //someName entre corchetes cuando necesite especificar el n-ésimo nodo de su lista de nodos seleccionada.


//img[@title=''Modify''][i]

es la abreviatura de

/descendant-or-self::node()/img[@title=''Modify''][i]

por lo tanto, devuelve el i-ésimo nodo bajo el mismo nodo padre.

Usted quiere

/descendant-or-self::img[@title=''Modify''][i]