En las siguientes líneas, el usuario será capaz de encontrar pistas y consejos sobre como identificar objetos vía Xpath.
Xpath es una manera de identificar objetos en base a la ruta a la que el objeto esta anidado. Como ejemplo: el Xpath “/html/body/div[2]/div/div/footer/section[3]/div/ul/li[3]/a” buscará en el cuerpo del html un elemento “div[2]” luego buscará un div, tras otro, un footer, y así hasta el final.
Hay básicamente dos formas de usar un Xpath: usando el Xpath entero o buscando solo un fragmento (para este último en vez de abrirse con / se abre con “/ /”). Como siempre, en pruebas, es bastante importante tener claro que el Xpath que se escribe es único y representa solamente un elemento. Como recordatorio, el ID del atributo es único.
Igualmente, dado que esto puede volverse demasiado largo, hay algunas maneras para acortarlo, para esto necesitamos saber su sintáxis:
Expresión XPath | Descripción | Ejemplo de Expresión | Ejemplo de Significado |
---|---|---|---|
/ | Selección del nodo de ruta. | (…)/b/a | Elemento ”a” hijo de ”b”, hijo de ”(…)“. |
/ / | Selecciona cualquier nodo del nodo actual que coincide con la selección no importa donde esté. | b / / a(…) | Todos los elementos ”a(…)” hijos de ”b”. |
* | Coincide con cualquier nodo. | b / * / a | Cualquier elemento ”a” del que es nieto de ”b“. |
. | Selecciona el nodo actual. | ./ /de | Cualquier elemento ”de” que está dentro de uno o más niveles del nodo actual. |
.. | Selecciona el padre del nodo actual. | abc[../mg] | Cualquier elemento ”abc” que tiene un hermano ”mg”. |
@ | Selecciona atributo. | a[@bcd] | Elemento ”a” con un atributo ”bcd”. |
@ = | Selecciona atributos con valor. | a[@bcd=“hola”] | Elemento ”a” con ”bcd” como atributo igual a hola. |
@* | Coincide con cualquier atributo. | a[@*=“hola”] | Elemento ”a” con cualquier atributo igual a hola. |
last() | Coincide con el ultimo elemento. | b / a[last()] | Ultimo elemento ”a” hijo de ”b“. |
[] | Elemento que contiene algo. | c[hello] / b[@a] | Elemento ”b” elemento que contiene un atributo ”a” hijo de atributo ”c” que contiene el elemento hello. |
[][] | Elemento que contiene dos o mas cosas (se añaden[] por cada uno). | a[@b][@c] | Elemento ”a” con los dos atributos ”b” y ”c”. |
[n] | El elemento “n” en un array. | b/a[3] | Tercer elemento ”a” hijo de ”b“. |
!= | Desigual. | a[@bcd!=“hola”] | Elemento ”a” con atributo ”bcd” no igual a hola. |
last() | Último elemento. | b/a[last()] | El último ”a” hijo de ”b“. |
() | Grupo de operaciones para establecer prioridades. | (de/mg)[3] | El tercer set entero de ”de/mg“. |
and | Uso lógico del AND. | a[b and c] | Elemento ”a” que contiene ambos ”b” y ”c“. |
or | Uso lógico del OR . | de[@mg or @dus] | Elemento ”de” que contiene los atributos ”mg” o ”dus”. |
contains() | Coincide con todos los elementos que parcialmente contienen lo que este dentro de los “()”. | de[contains(.,'click here')] | Elementos ”de” que contienen ”click here“. |
starts-with() | Coincide todos los elementos que estén contenidos en “()”. | de[starts-with(@id,'id-name')] | Elementos ”de“ que empiezan por ”id-name(…)“. |
[ .=''] | Coincide todos los elementos dentro de un string. | de[.='string 1 of 6'] | Elementos ”de” con el string ”string 1 of 6“. |
normalize-space() | Coincide los elementos con un string ignorando espacios en blanco. | de[normalize-space()='mg'] | Elementos ”de” con el string ”mg” o ” mg” o ”mg ” o ” mg “. |
text() | Selecciona los elementos con un texto especifico dentro. | de[text()=“mg”] | Elementos ”de” con string ”mg” en el campo de texto. |
[ / @ ] | Selecciona elementos que tienes algún hijo especifico. | / / de[mg/@attr1='nrw'] | Elementos ”de” con ”mg” hijo de ”attr1” igual a ”nrw“. |
Como obtener el Xpath de nodo XML con Notepad++:
1. Dentro de Notepad++ ir a plugins de aquí al gestor de plugins y elegir mostrar gestor de plugins.
2. Instalar XML tools (herramientas XML).
3. Reiniciar el Notepad++.
4. Cargar el documento XML que deseas.
5. Poner el cursor sobre el nodo del cual necesitas el Xpath.
6. Ir a Plugins, despues a XML Tools continuamos a ruta Xpath actual (combinación de teclas: Ctrl + Alt + Shift + P).
A continuación tendremos el Xpath copiado en el portapapeles.