Saltar al contenido

Tutorial de XPath en Selenium WebDriver: ¿Cómo encontrar XPath?

En la automatización del selenio, si los colonos generales no encuentran los elementos como id, clase, nombre, etc. Luego, XPath se usa para encontrar un elemento de la página web.

En este tutorial, aprenderemos sobre el xpath y las diferentes expresiones XPath para encontrar los elementos complejos o dinámicos, cuyas características cambian dinámicamente al actualizar o cualquier operación.

En este tutorial de XPath, aprenderá:

¿Qué es XPath en selenio?

XPath en selenio es una ruta XML utilizada para navegar a través de la estructura HTML de la página. Es una sintaxis o lenguaje para encontrar cualquier elemento de una página web usando una expresión de ruta XML. XPath se puede utilizar para documentos HTML y XML para encontrar la posición de cualquier elemento en una página web utilizando la estructura DOM de HTML.

El formato XPath básico en selenio se explica a continuación con una foto.

Formato básico XPath

Sintaxis para XPath selenium:

XPath contiene la ruta de los elementos ubicados en la página web. XPath es la sintaxis estándar para crear XPath.


Xpath=//tagname[@attribute="value"]

Para obtener el elemento en las páginas web con precisión, existen diferentes tipos de buscadores:

Buscadores XPath Encuentra varios elementos de la página web.
IDENTIFICACIÓN Para encontrar el elemento con la identidad del elemento
Nombre de la clasePara encontrar el elemento de acuerdo con el Nombre de clase del elemento
NombrePara encontrar el elemento por el nombre del elemento
Texto del enlacePara encontrar el elemento con el texto del enlace
XPathSe requiere XPath para encontrar el elemento dinámico y la diagonal entre diferentes elementos de la página web
Ruta CSSLa ruta CSS detecta elementos que no tienen nombre, clase o ID.

Tipos de rutas X

Hay dos tipos de XPath:

1) XPath absoluto

2) XPath relativo

XPath absoluto:

La forma directa es encontrar el elemento, pero la desventaja del XPath completo es que si se realizan cambios en la ruta del elemento, XPath falla.

La característica principal de XPath es que comienza con una barra diagonal única (/), lo que significa que puede seleccionar el elemento desde el nodo raíz.

A continuación se muestra un ejemplo de una representación xpath completa del elemento que se muestra en la captura de pantalla a continuación.

NOTA: Puede practicar el siguiente ejercicio XPath en este http://demo.guru99.com/test/selenium-xpath.html

Hacer clic aquí 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 relativo:

Xpath relativo comienza desde el medio de una estructura DOM HTML. Comienza con una doble barra inclinada (//). Puede buscar elementos en cualquier lugar de la página web, lo que significa que no necesita escribir un xpath largo y puede comenzar desde el medio de una estructura DOM HTML. El XPath relativo siempre es mejor porque no es una ruta completa desde la raíz.

A continuación se muestra un ejemplo de una representación relativa XPath del mismo elemento que se muestra en la captura de pantalla siguiente. Este es el formato común utilizado por XPath para encontrar un elemento.

Hacer clic aquí si el video no es accesible

Relative XPath: //div[@class="featured-box cloumnsize1"]//h4[1]//b[1]

XPath relativo

¿Qué son los ejes XPath?

Los ejes XPath buscan varios nodos en un documento XML desde el nodo de contexto actual. Los ejes XPath son los métodos utilizados para obtener elementos dinámicos, lo que generalmente no es posible con el método XPath normal sin ID, nombre de clase, nombre, etc.

Los métodos de Axis se utilizan para localizar esos elementos, que cambian dinámicamente al actualizar o cualquier otra operación. Hay pocos métodos de ejes de uso común en Webdriver de selenio como hijo, padre, antepasado, hermano, anterior, yo, etc.

Uso de elementos de manejo XPath complejos y dinámicos en Selenium

1) XPath básico:

Seleccione los nodos XPath o la lista de nodos en función de atributos como ID, nombre, nombre de la clase, etc. del documento XML como se muestra a continuación.

Xpath=//input[@name="uid"]

Aquí hay un enlace para acceder a la página. http://demo.guru99.com/test/selenium-xpath.html

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="http://demo.guru99.com/"]
Xpath= //img[@src="https://cdn.guru99.com/images/home/java.png"]

2) Sí ():

() Es un método utilizado en una 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 existente tiene la capacidad de encontrar el elemento con texto parcial como se muestra debajo del ejemplo de XPath.

En este ejemplo, intentamos identificar el elemento utilizando el valor de texto parcial de los atributos. En la expresión XPath a continuación, se usa el valor parcial de ‘sub’ en lugar del botón de envío. Se puede notar que el elemento se adquiere con éxito.

El valor total de ‘Tipo’ es ‘insertar’ pero usando solo el valor parcial de ‘sub’.


Xpath=//*[contains(@type,'sub')]  

El valor total de ‘nombre’ es ‘btnLogin’ pero solo se usa el valor parcial de ‘btn’.


Xpath=//*[contains(@name,'btn')]

En la oración anterior, tomamos el ‘nombre’ como un atributo y ‘btn’ como un valor parcial como se muestra en la imagen de abajo. Esto obtendrá 2 funciones (INICIAR SESIÓN Y REINICIAR) ya que su atributo ‘nombre’ comienza con ‘btn’.

De manera similar, en la oración siguiente, hemos tomado el ‘id’ como un atributo y el ‘mensaje’ como un valor parcial. Esto obtendrá dos características (‘El ID de usuario no necesita estar en blanco’ y ‘La contraseña no necesita estar en blanco’) ya que su atributo ‘nombre’ comienza con ‘mensaje’.


Xpath=//*[contains(@id,'message')]				

En la oración a continuación, hemos tomado el «texto» del enlace como un atributo y «aquí» como un valor parcial como se muestra en la imagen de abajo. Esto obtendrá el enlace (‘aquí’) ya que muestra el texto ‘aquí’.


Xpath=//*[contains(text(),'here')]
Xpath=//*[contains(@href,'guru99.com')]				

3) Usando OR & AND:

En una expresión OR, se utilizan dos condiciones, ya sea que la primera condición O la segunda condición sea verdadera. También es aplicable si una condición es verdadera o quizás ambas. Significa que una condición debe ser verdadera para encontrar el elemento.

En la expresión XPath a continuación, identifica los elementos cuyas condiciones individuales o ambas condiciones son verdaderas.


Xpath=//*[@type="submit" or @name="btnReset"]

Resalte ambas características como un elemento «LOGIN» con un atributo «tipo» y un elemento «RESET» con un «nombre».

En una oración AND, se usan dos condiciones, ambas condiciones deben ser verdaderas para obtener el elemento. No encuentra un elemento si una condición es falsa.


Xpath=//input[@type="submit" and @name="btnLogin"]

En la oración a continuación, enfatizando el elemento «INICIAR SESIÓN», ya que tiene el atributo «tipo» y «nombre».

4) Xpath comienza con

XPath-comienza con () es una función que se utiliza para encontrar el elemento web cuyo valor de atributo se cambia por actualización o por otras operaciones dinámicas en la página web. En este método, el texto inicial del atributo se compara para encontrar dinámicamente el elemento cuyo valor característico cambia. También puede buscar elementos cuyo valor de atributo sea estático (no cambia).

Por ejemplo: Supongamos que ID cambia dinámicamente ciertos cambios de elementos como:

Id = «mensaje12»

Id = «mensaje345»

Id = «mensaje8769»

y así sucesivamente … pero el texto introductorio es el mismo. En este caso, usamos una expresión Start-with.

En la oración a continuación, hay dos elementos con una identificación que comienza con un “mensaje” (es decir, ‘la identificación de usuario no tiene que estar en blanco’ y ‘la contraseña no tiene que estar en blanco’). En el siguiente ejemplo, XPath encuentra ese elemento cuyo ‘ID’ comienza con ‘mensaje’.


Xpath=//label[starts-with(@id,'message')]

5) Función de texto XPath ()

El es Función XPath text () Una unidad web de selenio es una función incorporada que se utiliza para localizar elementos basados ​​en el texto de un elemento web. Ayuda a obtener los elementos de texto exactos y ubica los elementos dentro del conjunto de nodos de texto. Los elementos a ubicar deben tener forma de alambre.

En esta oración, con una función de texto, encontramos el elemento con el texto exacto que se muestra a continuación. En nuestro caso, encontramos el elemento con el texto «UserID».


Xpath=//td[text()='UserID']				

6) Modos de eje XPath:

Estos métodos de eje XPath se utilizan para obtener los elementos complejos o dinámicos. A continuación veremos algunos de estos métodos.

Para ilustrar este método de eje XPath, usaremos el sitio de demostración del banco Guru99.

a) Siguiente:

Selecciona todos los elementos en el documento de nodo actual () [ UserID input box is the current node] como se muestra en la captura de pantalla a continuación.

Xpath=//*[@type="text"]//following::input

Hay 3 nodos de «entrada» que coinciden mediante el uso de contraseña de «restauración», inicio de sesión y restablecimiento. Si desea enfocarse en alguna característica en particular, puede usar el método XPath a continuación:

Xpath=//*[@type="text"]//following::input[1]

Puede cambiar XPath según sea necesario agregando [1],[2]………… y así.

Con la entrada como ‘1’, la foto de abajo encuentra el nodo único que es el elemento del cuadro de entrada ‘Contraseña’.

b) Ancestros:

El eje del ancestro selecciona todos los elementos del ancestro (abuelo, padre, etc.) del nodo actual como se muestra en la siguiente pantalla.

En la oración a continuación, obtenemos una característica ancestral del nodo actual (nodo «PRUEBA EMPRESARIAL»).

Xpath=//*[text()='Enterprise Testing']//ancestor::div

13 nodos «div» son compatibles usando un eje «ancestro». Si desea enfocarse en alguna característica en particular, puede usar el XPath a continuación, donde cambia el número 1, 2 según sus necesidades:

Xpath=//*[text()='Enterprise Testing']//ancestor::div[1]

Puede cambiar XPath según sea necesario agregando [1], [2]………… y así.

c) Niño:

Selecciona cada elemento del nodo actual (Java) para cada hijo como se muestra en la captura de pantalla a continuación.

Xpath=//*[@id='java_technologies']//child::li

71 nodos «li» son compatibles mediante el uso de un eje «bebé». Si desea enfocarse en alguna característica en particular, puede usar el xpath a continuación:


Xpath=//*[@id='java_technologies']//child::li[1]

Puede cambiar el xpath de acuerdo con el requisito agregando [1],[2]………… y así.

d) De antemano:

Seleccione todos los nodos que preceden al nodo actual como se muestra en la siguiente pantalla.

En la oración siguiente, identifica todos los elementos de entrada antes del botón «INICIAR SESIÓN» .i ID de usuario y contraseña elemento de entrada.

Xpath=//*[@type="submit"]//preceding::input

2 nodos de “entrada” son compatibles usando un eje “anterior”. Si desea enfocarse en alguna característica en particular, puede usar el XPath a continuación:

Xpath=//*[@type="submit"]//preceding::input[1]

Puede cambiar el xpath de acuerdo con el requisito agregando [1],[2]………… y así.

e) Después de un hermano:

Seleccione los siguientes hermanos del nodo de contexto. Los 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

Haga coincidir un nodo de entrada utilizando un eje «hermano».

f) Padre:

Un padre selecciona el nodo actual como se muestra en la siguiente pantalla.

Xpath=//*[@id='rt-feature']//parent::div

65 nodos «div» son compatibles mediante el uso de un eje «principal». Si desea enfocarse en alguna característica en particular, puede usar el XPath a continuación:

Xpath=//*[@id='rt-feature']//parent::div[1]

Puede cambiar XPath según sea necesario agregando [1],[2]………… y así.

g) Yo:

Selecciona el nodo actual o ‘self’ significa que representa el nodo en sí, como se muestra en la siguiente pantalla.

Haga coincidir un nodo usando un eje «propio». Siempre encuentra un solo nodo porque representa un elemento propio.

Xpath =//*[@type="password"]//self::input

h) Extracto:

Extraer selecciona el nodo actual como se muestra en la siguiente pantalla.

En la oración a continuación, identifica todo el paso del elemento al elemento actual (elemento de marco ‘Cuerpo principal’), lo que significa debajo del nodo (nodo hijo, nodo nieto, etc.).

Xpath=//*[@id='rt-feature']//descendant::a

12 nodos de «enlace» son compatibles utilizando un eje de «extracto». Si desea enfocarse en alguna característica en particular, puede usar el XPath a continuación:

Xpath=//*[@id='rt-feature']//descendant::a[1]

Puede cambiar XPath según sea necesario agregando [1],[2]………… y así.

Resumen:

Se requiere XPath para encontrar un elemento en la página web para ejecutar esa característica en particular.