XPath en Selenium:Tutorial

XPath en Selenium

ยฟ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.

Sintaxis XPath
Formato bรกsico de XPath
  • // : 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 absoluto
XPath absoluto

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]

XPath relativo
XPath relativo

ยฟ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

XPath bรกsico
XPath bรกsico

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".

Contiene ()

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')]

Contiene ()

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')]

Contiene ()

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'.

Usando O y Y

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".

Usando O y Y

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')]

XPath comienza con

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']

Funciรณn XPath Texto()

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

Siguiendo

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'.

Siguiendo

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

Antepasado

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

Niรฑo

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

Anterior

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

Hermano siguiente

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

Padre

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.

Propia

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

descendiente

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

XPath (XML Path Language) se utiliza para navegar por los elementos y atributos de un archivo. XML o documento HTML. Ayuda a identificar y recuperar nodos especรญficos, lo que lo hace esencial en el web scraping, el procesamiento de datos XML y herramientas de pruebas automatizadas como Selenium para localizar elementos web.

Utilice XPath cuando necesite localizar elementos web complejos o que cambian dinรกmicamente y que no se pueden identificar fรกcilmente con localizadores mรกs simples como el ID o el nombre de clase. Es ideal para navegar por estructuras jerรกrquicas, seleccionar nodos por atributos y manejar elementos sin identificadores รบnicos.

Los localizadores en XPath son expresiones que se utilizan para identificar elementos dentro de la estructura de un documento. Especifican rutas a los nodos mediante atributos, texto, jerarquรญa o posiciรณn. Las estrategias comunes de localizaciรณn incluyen la selecciรณn de elementos por nombre de etiqueta, valores de atributos, coincidencias parciales o combinaciones lรณgicas de condiciones.

XPath es de dos tipos: XPath absoluto y XPath relativo.

  • XPath absoluto comienza desde el nodo raรญz (por ejemplo, /html/body/โ€ฆ) y proporciona la ruta completa.
  • XPath relativo comienza desde cualquier nodo (por ejemplo, //div[@id='content']) y es mรกs flexible y fรกcil de mantener.

Una barra diagonal simple (/) selecciona los nodos que se encuentran directamente debajo del nodo raรญz o actual, representando una ruta absoluta. Una doble barra diagonal (//) busca nodos en cualquier parte del documento, independientemente de la jerarquรญa, lo que permite una mayor flexibilidad para encontrar elementos sin necesidad de especificar la ruta completa.

Sรญ, XPath distingue entre mayรบsculas y minรบsculas. Los nombres de los elementos, los nombres de los atributos y sus valores deben coincidir exactamente con su forma en el documento. Por ejemplo, //div y //DIV se tratan de forma diferente. Para que no distinga entre mayรบsculas y minรบsculas, se pueden usar funciones como translate() en las expresiones XPath.

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

Resumir este post con: