XPath en Selenium:Tutorial
ยฟQuรฉ es XPath en Selenium?
XPath en Selenium es una ruta XML utilizada para navegar a travรฉs de la estructura HTML de la pรกgina. Es una sintaxis o lenguaje para buscar cualquier elemento en una pรกgina web utilizando una expresiรณn de ruta XML. XPath se puede utilizar tanto para documentos HTML como XML para encontrar la ubicaciรณn de cualquier elemento en una pรกgina web utilizando la estructura HTML DOM.
In Selenium En el caso de la automatizaciรณn, si los elementos no se encuentran mediante los localizadores generales como id, clase, nombre, etc., se utiliza XPath para encontrar un elemento en la pรกgina web.
En este tutorial, aprenderemos sobre Xpath y diferentes expresiones XPath para encontrar elementos complejos o dinรกmicos, cuyos atributos cambian dinรกmicamente al actualizar o cualquier operaciรณn.
Sintaxis XPath
XPath contiene la ruta del elemento situado en la pรกgina web. La sintaxis XPath estรกndar para crear XPath es.
Xpath=//tagname[@attribute='value']
A continuaciรณn se explica el formato bรกsico de XPath en Selenium con una captura de pantalla.

- // : Seleccione el nodo actual.
- Nombre de etiqueta: Nombre de etiqueta del nodo en particular.
- @: Seleccionar atributo.
- Atributo: Nombre del atributo del nodo.
- Valor: Valor del atributo.
Para encontrar el elemento en las pรกginas web con precisiรณn existen diferentes tipos de localizadores:
| Localizadores XPath | Encuentra diferentes elementos en la pรกgina web |
|---|---|
| ID | Para encontrar el elemento por ID del elemento |
| Nombre de la clase | Para encontrar el elemento por nombre de clase del elemento |
| Nombre | Para encontrar el elemento por nombre del elemento |
| Texto del enlace | Para encontrar el elemento por texto del enlace |
| XPath | Se requiere XPath para encontrar el elemento dinรกmico y recorrer entre varios elementos de la pรกgina web. |
| ruta CSS | La ruta CSS tambiรฉn localiza elementos que no tienen nombre, clase o ID. |
Tipos de ruta X
Hay dos tipos de XPath:
1) XPath absoluto
2) XPath relativo
XPath absoluto
Es la forma directa de encontrar el elemento, pero la desventaja del XPath absoluto es que si se realizan cambios en la ruta del elemento, ese XPath falla.
La caracterรญstica clave de XPath es que comienza con una sola barra diagonal (/), lo que significa que puede seleccionar el elemento del nodo raรญz.
A continuaciรณn se muestra el ejemplo de una expresiรณn XPath absoluta del elemento que se muestra en la siguiente pantalla.
NOTA: Puedes practicar el siguiente ejercicio de XPath en este https://demo.guru99.com/test/selenium-xpath.html
Haga clic en aqui si el video no es accesible
XPath absoluto:
/html/body/div[2]/div[1]/div/h4[1]/b/html[1]/body[1]/div[2]/div[1]/div[1]/h4[1]/b[1]
Xpath relativo
Xpath relativo Comienza desde el medio de la estructura DOM de HTML. Comienza con una barra diagonal doble (//). Puede buscar elementos en cualquier parte de la pรกgina web, lo que significa que no es necesario escribir un xpath largo y puede comenzar desde el medio de la estructura DOM de HTML. Siempre se prefiere el Xpath relativo, ya que no es una ruta completa desde el elemento raรญz.
A continuaciรณn se muestra el ejemplo de una expresiรณn XPath relativa del mismo elemento que se muestra en la siguiente pantalla. Este es el formato comรบn utilizado para buscar elementos mediante XPath.
Haga clic en aqui si el video no es accesible
Relative XPath: //div[@class='featured-box cloumnsize1']//h4[1]//b[1]
ยฟQuรฉ son los ejes XPath?
Los ejes XPath buscan diferentes nodos en un documento XML a partir del nodo de contexto actual. Son mรฉtodos que se utilizan para encontrar elementos dinรกmicos, algo que de otro modo no serรญa posible con un mรฉtodo XPath normal sin ID, nombre de clase, nombre, etc. XPath en Selenium Incluye varios mรฉtodos como Contiene, AND, XPath absoluto y XPath relativo para identificar y localizar elementos dinรกmicos en funciรณn de diversos atributos y condiciones.
Los mรฉtodos de ejes se utilizan para encontrar aquellos elementos que cambian dinรกmicamente al actualizar o cualquier otra operaciรณn. Hay pocos mรฉtodos de ejes comรบnmente utilizados en Selenium controlador web como hijo, padre, antepasado, hermano, precedente, yo, etc.
Cรณmo escribir XPath dinรกmico en Selenium Controlador web
1) XPath bรกsico
La expresiรณn XPath selecciona nodos o lista de nodos en funciรณn de atributos como ID, nombre, nombre de clase, etc. del documento XML como se ilustra a continuaciรณn.
Xpath=//input[@name='uid']
Aquรญ te dejo un enlace para acceder a la pรกgina. https://demo.guru99.com/test/selenium-xpath.html
Algunas expresiones XPath mรกs bรกsicas:
Xpath=//input[@type='text'] Xpath=//label[@id='message23'] Xpath=//input[@value='RESET'] Xpath=//*[@class='barone'] Xpath=//a[@href='https://demo.guru99.com/'] Xpath=//img[@src='//guru99.com/images/home/java.png']
2) Contiene()
Contiene() es un mรฉtodo utilizado en la expresiรณn XPath. Se utiliza cuando el valor de cualquier atributo cambia dinรกmicamente, por ejemplo, la informaciรณn de inicio de sesiรณn.
La funciรณn de contener tiene la capacidad de encontrar el elemento con texto parcial como se muestra en el siguiente ejemplo de XPath.
En este ejemplo, intentamos identificar el elemento simplemente usando el valor de texto parcial del atributo. En la siguiente expresiรณn XPath, se utiliza el valor parcial "sub" en lugar del botรณn de envรญo. Se puede observar que el elemento se encuentra exitosamente.
El valor completo de 'Tipo' es 'enviar' pero usando solo el valor parcial 'sub'.
Xpath=//*[contains(@type,'sub')]
El valor completo de 'nombre' es 'btnLogin' pero usando solo el valor parcial 'btn'.
Xpath=//*[contains(@name,'btn')]
En la expresiรณn anterior, hemos tomado el "nombre" como atributo y "btn" como valor parcial, como se muestra en la siguiente captura de pantalla. Esto encontrarรก 2 elementos (INICIAR SESIรN Y RESET), ya que su atributo "nombre" comienza con "btn".
De manera similar, en la siguiente expresiรณn, hemos tomado "id" como atributo y "mensaje" como valor parcial. Esto encontrarรก 2 elementos (โLa ID de usuario no debe estar en blancoโ y โLa contraseรฑa no debe estar en blancoโ) ya que su atributo โidโ comienza con โmensajeโ.
Xpath=//*[contains(@id,'message')]
En la siguiente expresiรณn, hemos tomado el "texto" del enlace como un atributo y "aquรญ" como un valor parcial, como se muestra en la siguiente captura de pantalla. Esto encontrarรก el enlace ("aquรญ"), ya que muestra el texto "aquรญ".
Xpath=//*[contains(text(),'here')]
Xpath=//*[contains(@href,'guru99.com')]
3) Usando O Y Y
En la expresiรณn OR, se utilizan dos condiciones, ya sea que la primera condiciรณn o la segunda condiciรณn sean verdaderas. Tambiรฉn es aplicable si alguna de las condiciones es verdadera o tal vez ambas. Significa que cualquier condiciรณn debe ser verdadera para encontrar el elemento.
En la siguiente expresiรณn XPath, identifica los elementos cuyas condiciones รบnicas o ambas son verdaderas.
Xpath=//*[@type='submit' or @name='btnReset']
Resaltando ambos elementos como el elemento โLOGINโ que tiene el atributo 'type' y el elemento โRESETโ que tiene el atributo 'name'.
En la expresiรณn AND, se utilizan dos condiciones, ambas condiciones deben ser verdaderas para encontrar el elemento. No puede encontrar el elemento si alguna de las condiciones es falsa.
Xpath=//input[@type='submit' and @name='btnLogin']
En la siguiente expresiรณn, se resalta el elemento "INICIAR SESIรN" ya que tiene el atributo "tipo" y "nombre".
4) XPath comienza con
XPath comienza con() es una funciรณn utilizada para encontrar el elemento web cuyo valor de atributo cambia al actualizar o mediante otras operaciones dinรกmicas en la pรกgina web. En este mรฉtodo, el texto inicial del atributo coincide para encontrar el elemento cuyo valor de atributo cambia dinรกmicamente. Tambiรฉn puede encontrar elementos cuyo valor de atributo sea estรกtico (no cambie).
Por ejemplo: supongamos que el ID de un elemento en particular cambia dinรกmicamente como:
Id = "mensaje12"
Id = "mensaje345"
Id = "mensaje8769"
y asรญ sucesivamente... pero el texto inicial es el mismo. En este caso, utilizamos la expresiรณn Comenzar con.
En la siguiente expresiรณn, hay dos elementos con una identificaciรณn que comienza con "mensaje" (es decir, "La identificaciรณn de usuario no debe estar en blanco" y "La contraseรฑa no debe estar en blanco"). En el siguiente ejemplo, XPath encuentra aquellos elementos cuyo "ID" comienza con "mensaje".
Xpath=//label[starts-with(@id,'message')]
5) Funciรณn Texto XPath()
El Funciรณn de texto XPath() es una funciรณn integrada de Selenium WebDriver que se utiliza para localizar elementos segรบn el texto de un elemento web. Ayuda a encontrar los elementos de texto exactos y los ubica dentro del conjunto de nodos de texto. Los elementos que se deben localizar deben estar en formato de cadena.
En esta expresiรณn, con la funciรณn de texto, encontramos el elemento con coincidencia exacta de texto como se muestra a continuaciรณn. En nuestro caso, encontramos el elemento con texto โUserIDโ.
Xpath=//td[text()='UserID']
Mรฉtodos de ejes XPath
Estos mรฉtodos de ejes XPath se utilizan para encontrar elementos complejos o dinรกmicos. A continuaciรณn veremos algunos de estos mรฉtodos.
Para ilustrar este mรฉtodo de ejes XPath, utilizaremos el sitio de demostraciรณn del banco Guru99.
1) Siguiendo
Selecciona todos los elementos en el documento del nodo actual () [el cuadro de entrada de ID de usuario es el nodo actual] como se muestra en la siguiente pantalla.
Xpath=//*[@type='text']//following::input
Hay 3 nodos de โentradaโ que coinciden mediante el uso de los ejes โsiguientesโ: contraseรฑa, inicio de sesiรณn y botรณn de reinicio. Si desea centrarse en algรบn elemento en particular, puede utilizar el siguiente mรฉtodo XPath:
Xpath=//*[@type='text']//following::input[1]
Puede cambiar el XPath segรบn los requisitos poniendo [1],[2]โฆโฆโฆโฆy asรญ sucesivamente.
Con la entrada como '1', la siguiente captura de pantalla busca el nodo particular que es el elemento del cuadro de entrada 'Contraseรฑa'.
2) Ancestro
El eje ancestro selecciona todos los elementos ancestros (abuelo, padre, etc.) del nodo actual como se muestra en la siguiente pantalla.
En la siguiente expresiรณn, encontramos el elemento ancestro del nodo actual (nodo โPRUEBAS EMPRESARIALESโ).
Xpath=//*[text()='Enterprise Testing']//ancestor::div
Hay 13 nodos "div" que coinciden mediante el uso del eje "ancestro". Si desea centrarse en algรบn elemento en particular, puede utilizar el siguiente XPath, donde cambia el nรบmero 1, 2 segรบn sus necesidades:
Xpath=//*[text()='Enterprise Testing']//ancestor::div[1]
Puede cambiar el XPath segรบn los requisitos poniendo [1], [2]โฆโฆโฆโฆy asรญ sucesivamente.
3) niรฑo
Selecciona todos los elementos secundarios del nodo actual (Java) como se muestra en la siguiente pantalla.
Xpath=//*[@id='java_technologies']//child::li
Hay 71 nodos "li" que coinciden mediante el uso del eje "secundario". Si desea centrarse en algรบn elemento en particular, puede utilizar la siguiente ruta XPath:
Xpath=//*[@id='java_technologies']//child::li[1]
Puede cambiar el xpath segรบn los requisitos poniendo [1],[2]โฆโฆโฆโฆy asรญ sucesivamente.
4) Precedente
Seleccione todos los nodos que vienen antes del nodo actual como se muestra en la siguiente pantalla.
En la siguiente expresiรณn, identifica todos los elementos de entrada antes del botรณn "INICIAR SESIรN" que estรก ID de usuario y la contraseรฑa elemento de entrada.
Xpath=//*[@type='submit']//preceding::input
Hay 2 nodos de "entrada" que coinciden mediante el uso del eje "precedente". Si desea centrarse en algรบn elemento en particular, puede utilizar el siguiente XPath:
Xpath=//*[@type='submit']//preceding::input[1]
Puede cambiar el xpath segรบn los requisitos poniendo [1],[2]โฆโฆโฆโฆy asรญ sucesivamente.
5) Hermano siguiente
Seleccione los siguientes elementos hermanos del nodo de contexto. Los elementos hermanos estรกn en el mismo nivel del nodo actual, como se muestra en la siguiente pantalla. Encontrarรก el elemento despuรฉs del nodo actual.
xpath=//*[@type='submit']//following-sibling::input
Un nodo de entrada coincide mediante el eje โsiguiente hermanoโ.
6) Padre
Selecciona el padre del nodo actual como se muestra en la siguiente pantalla.
Xpath=//*[@id='rt-feature']//parent::div
Hay 65 nodos "div" que coinciden mediante el eje "principal". Si desea centrarse en algรบn elemento en particular, puede utilizar el siguiente XPath:
Xpath=//*[@id='rt-feature']//parent::div[1]
Puede cambiar el XPath segรบn los requisitos poniendo [1],[2]โฆโฆโฆโฆy asรญ sucesivamente.
7) yo
Selecciona el nodo actual o "auto", significa que indica el nodo en sรญ como se muestra en la siguiente pantalla.
Un nodo coincide mediante el uso del eje "propio". Siempre encuentra un solo nodo, ya que representa el elemento propio.
Xpath =//*[@type='password']//self::input
8) Descendiente
Selecciona los descendientes del nodo actual como se muestra en la siguiente pantalla.
En la siguiente expresiรณn, identifica todos los elementos descendientes del elemento actual (elemento de marco "entorno del cuerpo principal"), lo que significa debajo del nodo (nodo hijo, nodo nieto, etc.).
Xpath=//*[@id='rt-feature']//descendant::a
Hay 12 nodos de "enlace" que coinciden mediante el uso del eje "descendiente". Si desea centrarse en algรบn elemento en particular, puede utilizar el siguiente XPath:
Xpath=//*[@id='rt-feature']//descendant::a[1]
Puede cambiar el XPath segรบn los requisitos poniendo [1],[2]โฆโฆโฆโฆy asรญ sucesivamente.
Preguntas Frecuentes
Resumen
Se requiere XPath para encontrar un elemento en la pรกgina web y realizar una operaciรณn en ese elemento en particular.
- Hay dos tipos de XPath de selenio:
- XPath absoluto
- XPath relativo
- Los ejes XPath son los mรฉtodos utilizados para encontrar elementos dinรกmicos, que de otra manera no serรญa posible encontrar mediante el mรฉtodo XPath normal.
- La expresiรณn XPath selecciona nodos o lista de nodos en funciรณn de atributos como ID, nombre, nombre de clase, etc. del documento XML.
Tambiรฉn verifique: Selenium Tutorial para principiantes: aprenda WebDriver en 7 dรญas

















