Siéntate en el trono de Selenium con funciones XPath
Funciones XPath –
Hay 4 tipos de funciones XPath utilizadas para encontrar elementos difíciles. Algunos de esos elementos pueden contener valores de atributos que cambian. Los tipos de funciones XPath son
#1 Conjunto de nodos
#2 Cadena
#3 Booleano
#4 Número
Este video demuestra cómo encontrar elementos con valores de atributos dinámicos.
El libro gratuito de Selenium cubre XPath (páginas 67 - 78)
► Transcripción
Introducción
El siguiente AUT es GitHub. Vamos a inspeccionar la nota debajo del nombre de usuario. Aquí hay un caso especial donde XPath o CSS Selector es nuestra única opción y un ejemplo perfecto para mostrarte por qué no debemos usar Chrome DevTools para copiar XPath. Copiar un valor de XPath funciona a veces, pero no es confiable. Por lo tanto, es mejor no hacer clic derecho, copiar y copiar XPath y luego pegar XPath. Observa el valor del id.
Ahora, voy a recargar la página. Copia XPath nuevamente y luego pega XPath. ¿Ves cómo el valor cambió después de recargar la página? Eso se llama un valor de id dinámico donde el valor cambia cada vez. Este video te mostrará cómo manejar valores dinámicos usando funciones XPath.
Funciones XPath
Hay 4 tipos de funciones XPath. En el sitio de Oracle, vemos Conjunto de nodos, Cadena, Booleano y Número. Nuestro enfoque será en las funciones de cadena. En nuestra hoja de trucos, las llamo Coincidencia de patrón parcial porque todo lo que necesitamos hacer es coincidir parte del valor del atributo. Iba a demostrar 3 funciones, pero eliminaré ends-with y luego demostraré starts-with y contains.
Volviendo a nuestro AUT para la función starts-with. Escribimos 2 barras diagonales, el nombre de la etiqueta es p, corchetes de apertura y cierre, starts-with, paréntesis de apertura y cierre, símbolo de arroba, el nombre del atributo es id, coma, 2 comillas simples, luego escribimos con qué comienza el valor. El valor comienza con descripción, así que escribamos descripción entre ambas comillas. Bingo, ahí está. También podemos reemplazar starts-with y usar la siguiente función contains. Ambas funciones funcionarán porque el valor comienza con descripción y también contiene descripción.
Elimina starts-with y luego agrega contains. ¿Notaste que hemos encontrado 1 de 2? 1 de 2 no es suficiente si solo estamos buscando verificar la nota debajo del nombre de usuario. Ambos elementos casi se ven iguales. ¿Cómo encontramos 1 de 1 cuando ambos elementos tienen p como tagName, atributo de clase con un valor de nota y un valor de id dinámico?
Recuerda de la sesión anterior, usamos XPath con un operador lógico AND. Veamos ambos WebElements. Una nota se refiere al nombre de usuario y la otra nota se refiere a la dirección de correo electrónico. Podemos usar una palabra o podemos usar una frase de la nota. Dentro de los corchetes, escribimos y contains, 2 paréntesis, escribimos un punto, coma, 2 comillas simples, dentro de las comillas, podemos escribir la frase completa Esto será tu nombre de usuario y así sucesivamente. Ahora, tenemos 1 de 1. Sin embargo, prefiero usar una palabra única como nombre de usuario y aún tenemos 1 de 1.
Esta consulta está pidiendo encontrar “una etiqueta p que comienza con un atributo id que consiste en un valor de descripción y contiene el texto nombre de usuario”. También podemos reemplazar el punto con la función de texto. Sin embargo, hay casos en los que el texto no funcionará. Crearé un video explicando la diferencia entre usar un valor XPath usando un punto y usando texto. Aún vemos 1 de 1. Si eliges no escribir la palabra y, puedes reemplazarla con los corchetes cuadrados.
Vamos a Tools QA y continuemos con una sintaxis diferente para la función de texto. Inspecciona el nombre de pila. Vemos un nombre de etiqueta fuerte pero no vemos ningún atributo. Escribe 2 barras diagonales, strong, ambos corchetes, text, 2 paréntesis, igual, 2 comillas simples, nombre de pila, y bingo. Encontramos nuestro elemento. Eso es todo sobre funciones XPath.
A continuación, son los ejes XPath.
#SeleniumTraining #FuncionesXPath #SeleniumWebDriver #AutomatizaciónSelenium