Entendiendo los selectores de Playwright Una guía

Guía para entender los selectores de Playwright

Imagen de 200 Degrees de Pixabay

Playwright es una biblioteca de automatización potente y versátil para pruebas web, que permite a los desarrolladores controlar los navegadores web de forma programática y realizar pruebas de extremo a extremo confiables. En el corazón de la funcionalidad de Playwright se encuentra un componente crucial: los selectores. Los selectores son el puente entre tus pruebas y tu página web. Te permiten encontrar e interactuar con elementos en la página web.

Esta guía profundiza en los selectores en Playwright, mostrando su importancia, tipos y mejores prácticas.

¿Qué son los selectores en Playwright?

Los selectores en Playwright son cadenas de texto que identifican elementos particulares en una página web. Se utilizan para apuntar a estos elementos para interacciones como hacer clic, escribir o leer texto. Los selectores hacen que tus pruebas sean más legibles y resistentes a los cambios, y ayudan a mantener el enfoque en el comportamiento que estás tratando de probar.

Tipos de selectores en Playwright

Hay varios tipos de selectores disponibles en Playwright. Estos incluyen selectores CSS, selectores XPath, selectores de texto y selectores de atributos. Veamos cada uno.

Selectores CSS

Los selectores CSS se basan en el lenguaje CSS utilizado para diseñar páginas web. Nos permiten identificar elementos en una página web utilizando propiedades CSS. Los selectores CSS pueden apuntar a elementos por su tipo (como div, button, a), clase (.nombreclase), ID (#nombreid), atributo ([atributo=valor]) o una combinación de ellos.

Por ejemplo, en Playwright, podrías apuntar a un botón con el ID submit utilizando page.click( '#submit' ). Si tienes una clase o atributo único, puedes seleccionarlos de manera similar. Los selectores CSS también permiten consultas más complejas, como seleccionar el primer hijo de un nodo (:primer-hijo), seleccionar elementos con relaciones de hermanos específicas (+, ~), o seleccionar elementos que se encuentren en un estado específico (:hover, :focus).

Selectores XPath

Los selectores XPath ofrecen una forma diferente de navegar por elementos y atributos en un documento HTML. Son particularmente poderosos cuando necesitas apuntar a elementos basados en su posición jerárquica en el documento HTML o en el texto específico que contienen.

Por ejemplo, page.click('//button[normalize-space(.)="Registrarse"]') apunta a un botón con el texto exacto “Registrarse”. La expresión / / le indica a XPath que busque en todo el documento HTML. El button le indica a XPath que solo busque elementos de tipo botón. La parte normalize-space(.)="Registrarse" es una función que recorta los espacios en blanco al principio y al final de la cadena y reemplaza las secuencias de caracteres de espacio en blanco por un solo espacio. Esto puede ser muy útil cuando se trata de un formato impredecible.

Selectores de texto

Los selectores de texto te permiten apuntar a elementos basados en el texto que se muestra. Esto puede ser extremadamente útil para pruebas desde la perspectiva del usuario, ya que los usuarios a menudo interactúan con las páginas web en función del texto que ven.

Por ejemplo, con el comando page.click('text="Registrarse"'), Playwright buscaría un elemento que muestre el texto “Registrarse” y haría clic en él. Esto funciona para botones, enlaces, divs, spans y otros elementos que pueden contener texto visible.

Selectores de atributos

Los selectores de atributos apuntan a elementos basados en sus atributos HTML. Esto puede ser útil cuando un elemento no tiene una clase o ID único o cuando su posición en el documento HTML no está fija.

Por ejemplo, el comando page.click('[disabled]') apunta a un elemento con el atributo disabled, independientemente de su tipo, clase o ID. También puedes apuntar a valores específicos de atributos, por ejemplo, page.click('[value="Enviar"]') haría clic en un elemento con un atributo value de Enviar.

Trabajando con Selectores Compuestos

Cuando se trata de páginas web complejas, los desarrolladores a menudo se encuentran con situaciones en las que los elementos no pueden ser seleccionados de manera confiable por un solo tipo de selector. Aquí es donde entran en juego los selectores compuestos. Te permiten encadenar diferentes tipos de selectores, creando así un proceso de selección de elementos más preciso y robusto.

Los selectores compuestos en Playwright son una combinación de diferentes tipos de selectores que se unen utilizando el operador >>. Este operador indica que el elemento que se está seleccionando debe coincidir con todos los selectores combinados en la secuencia.

Desglosemos este ejemplo dado: page.click('css=.container >> text=Submit'). En este comando:

  • css=.container utiliza un selector CSS para seleccionar un elemento con la clase container. Los selectores CSS se utilizan a menudo debido a su presencia ubicua en el desarrollo web, su precisión y su legibilidad.
  • >> es el operador que combina los selectores. Crea una relación entre los selectores, indicando que el elemento text=Submit debe ser un hijo (directo o indirecto) del elemento .container.
  • text=Submit utiliza un selector de texto para seleccionar un elemento que muestra el texto visible “Submit”. Este es un ejemplo de selección de elementos desde la perspectiva del usuario, ya que los usuarios a menudo interactúan con elementos basados en el texto visible.

En un escenario práctico, supongamos que tienes varios botones “Submit” en una página web, cada uno dentro de un .container diferente. El selector compuesto proporciona una forma de interactuar con el botón “Submit” específico dentro del .container deseado.

Aunque son poderosos, los selectores compuestos también requieren consideración cuidadosa. Su precisión depende de la estructura de la página web; cualquier cambio en la estructura puede requerir actualizaciones en los selectores compuestos. Como tal, aunque proporcionan una selección de elementos más precisa, pueden aumentar potencialmente el mantenimiento si la estructura de la página web está sujeta a cambios frecuentes.

Selectores Personalizados en Playwright

Playwright es increíblemente flexible, proporcionando varios selectores integrados para adaptarse a los casos de uso más comunes. Sin embargo, siempre habrá escenarios únicos o complejos que requieran un enfoque más personalizado. Para estos casos, Playwright ofrece la capacidad de diseñar selectores personalizados, lo que brinda a los desarrolladores la libertad de adaptar las estrategias de selección de elementos a sus necesidades específicas.

Los selectores personalizados pueden ser especialmente beneficiosos al trabajar con componentes web personalizados o estructuras DOM no convencionales. Por ejemplo, supongamos que estás interactuando con una página web que utiliza un componente web personalizado que tiene propiedades únicas para el componente. Podrías crear un selector personalizado que seleccione específicamente elementos basados en estas propiedades específicas del componente.

Aquí hay un ejemplo conceptual para ilustrar esto.

Imagina que tienes un componente web personalizado <my-component> con una propiedad única data-state:

<my-component data-state="active">…</my-component>

Para seleccionar este estado activo, podrías crear un selector personalizado en Playwright que comprenda este atributo data-state:

 <span class="pre--content">playwright.<span class="hljs-property">selectors</span>.<span class="hljs-title function_">register</span>(<span class="hljs-string">'mySelector'</span>, {  <span class="hljs-comment">// El método create se utiliza para crear el selector personalizado.</span>  <span class="hljs-title function_">create</span>(<span class="hljs-params">root, target</span>) {    <span class="hljs-keyword">return</span> root.<span class="hljs-title function_">querySelector</span>(<span class="hljs-string">`[data-state=<span class="hljs-subst">${target}</span>]`</span>);  },});</span>

Luego puedes usar este selector personalizado en tus comandos de Playwright:

await page.click('mySelector=active');

Este comando haría clic en <my-component> solo cuando data-state esté “activo”.

Esta habilidad para crear selectores personalizados amplifica la versatilidad de Playwright, permitiéndole adaptarse a peculiaridades específicas de la aplicación y proporcionando a los desarrolladores un control preciso sobre cómo se seleccionan e interactúan con los elementos en sus pruebas.

Mejores prácticas para usar selectores en Playwright

Seleccionar los elementos correctos es clave para una automatización exitosa en Playwright. Aquí hay algunas ideas clave basadas en mi experiencia:

1. Optar por la especificidad en lugar de la flexibilidad: Apunta a selectores lo suficientemente específicos para identificar los objetivos pero lo suficientemente flexibles para tolerar cambios menores en la página web. Los selectores demasiado precisos a menudo se rompen con pequeños ajustes en la interfaz de usuario.

2. Usar atributos significativos: id, name o data-testid suelen ser únicos y consistentes, siendo la elección preferida para los selectores. Esto ayuda a crear scripts de prueba resistentes.

3. Priorizar la legibilidad: Tu código no es solo para ti; es para tu equipo y para tu yo futuro. Mantén los selectores intuitivos y claros, complementándolos con comentarios cuando sea necesario.

4. Usar selectores compuestos y personalizados de manera inteligente: Estas son herramientas poderosas para crear selectores precisos y contextualmente conscientes. Úsalas con prudencia, ya que podrían convertirse en una dificultad de mantenimiento si se usan en exceso o de manera incorrecta.

Conclusión

El dominio de los selectores en Playwright implica comprender y equilibrar sus fortalezas únicas. Selectores específicos pero flexibles, atributos significativos, código legible y el uso inteligente de selectores compuestos y personalizados son fundamentales para la automatización efectiva. A medida que continúas tu viaje con Playwright, estas pautas te servirán como una brújula, ayudándote a navegar por el complejo mundo de la automatización web. Recuerda, el aprendizaje constante y la adaptación son clave para las pruebas web exitosas con Playwright.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Aprendizaje Automático

¡Hola GPU, ¿qué hay de mi matriz?

Multiplicación de matrices; el Santo Grial de las redes neuronales profundas y los gigantes modernos de la comprensió...

Inteligencia Artificial

Escala el entrenamiento y la inferencia de miles de modelos de aprendizaje automático con Amazon SageMaker

Entrenar y servir miles de modelos requiere una infraestructura robusta y escalable, y ahí es donde Amazon SageMaker ...

Inteligencia Artificial

Bloqueo de Apple de Beeper Mini en iMessage solo es parte de la gran saga de la burbuja azul/verde

Apple toma medidas preventivas para proteger a sus clientes. Beeper afirma que el último movimiento de Apple hace exa...

Inteligencia Artificial

Comprendiendo el Lado Oscuro de los Modelos de Lenguaje Grandes Una Guía Completa sobre Amenazas de Seguridad y Vulnerabilidades

Los LLM se han vuelto cada vez más populares en la comunidad de procesamiento de lenguaje natural (NLP, por sus sigla...