Selector de CSS en Selenium

โšก Resumen inteligente

Selector de CSS en Selenium es una poderosa estrategia de localizaciรณn que identifica elementos usando etiquetas HTML, ID, clases, atributos y patrones de texto internos. Este recurso explica cada tipo de selector CSS con ejemplos paso a paso para Selenium IDE

  • ๐Ÿ†” Etiqueta e ID: Combina una etiqueta HTML con el prefijo # para seleccionar con precisiรณn elementos que tengan un atributo ID รบnico.
  • ๐ŸŽฏ Etiqueta y clase: Utilice la sintaxis del punto (.) para localizar elementos que comparten una clase CSS, lo cual resulta รบtil para componentes de interfaz de usuario repetidos.
  • ๐Ÿงฉ Etiqueta y atributo: Utilice corchetes [atributo=valor] para identificar elementos mediante su nombre, tipo o cualquier par de atributos personalizados.
  • ๐Ÿชœ Etiqueta, clase y atributo: Apila varias condiciones para desambiguar elementos que comparten tanto nombres de clase como valores de atributos.
  • ๐Ÿ”ค Coincidencia de texto interno: Utilice el patrรณn :contains(โ€œtextโ€) para localizar etiquetas y elementos que carecen de ID, nombres o clases.
  • โœ… Mejora la prรกctica: Prefiera los identificadores estables a los selectores anidados profundamente para mantener Selenium Scripts de automatizaciรณn resistentes a los cambios en la interfaz de usuario.

Selector de CSS en Selenium

ยฟQuรฉ es un selector CSS? Selenium?

A Selector de CSS en Selenium Es un patrรณn de cadena que identifica un elemento web a travรฉs de una combinaciรณn de etiqueta HTML, ID, clase y atributos. Los selectores CSS son un poco mรกs avanzados que la localizaciรณn por ID o nombre, pero son la estrategia mรกs popular entre los expertos. Selenium usuarios porque pueden acceder a elementos que no tienen ningรบn atributo de ID o Nombre.

Selectores CSS en Selenium vienen en muchas formas, pero esta guรญa se centra en los cinco patrones mรกs comunes utilizados en Selenium IDE:

  • Etiqueta e identificaciรณn
  • Etiqueta y clase
  • Etiqueta y atributo
  • Etiqueta, clase y atributo
  • Texto interno

Al utilizar esta estrategia en Selenium IDE, siempre anteponga el Target caja con โ€œcss=โ€ como se demuestra en cada uno de los ejemplos a continuaciรณn.

ยฟPor quรฉ usar selectores CSS en? Selenium?

Los selectores CSS son la estrategia de localizaciรณn preferida para muchos Selenium Los ingenieros de automatizaciรณn buscan equilibrar velocidad, flexibilidad y legibilidad. Las aplicaciones web modernas suelen usar identificadores generados dinรกmicamente o eliminan por completo los atributos de nombre, lo que deja a los selectores CSS como la รบnica forma fiable de seleccionar un elemento especรญfico en la pรกgina.

Las principales ventajas de utilizar selectores CSS incluyen:

  • Actuaciรณn: Los selectores CSS son procesados โ€‹โ€‹por el motor nativo del navegador, por lo que se ejecutan mรกs rรกpido que las expresiones XPath equivalentes, especialmente en navegadores antiguos como Internet Explorer.
  • Flexibilidad: Combinan lรณgica de etiquetas, clases, atributos y coincidencias parciales, lo que permite a los evaluadores identificar elementos que carecen de un ID estable.
  • Legibilidad: La sintaxis reproduce la forma en que los desarrolladores ya escriben reglas CSS, lo que acorta la curva de aprendizaje tanto para los ingenieros de control de calidad como para los equipos de desarrollo front-end.
  • Estabilidad en diferentes navegadores: Los selectores CSS se comportan de manera consistente en Chrome, Firefox, Edge y Safari, reduciendo los fallos de prueba inestables.

Etiqueta e ID โ€“ Selector CSS

Este ejemplo utiliza el cuadro de texto Correo electrรณnico en la pรกgina de inicio de sesiรณn de Facebook. El elemento tiene un ID de โ€œo enviar un email.โ€œ, y ya se habรญa accedido a รฉl en la secciรณn โ€œLocalizaciรณn por IDโ€. Ahora se apunta al mismo elemento usando un Selenium Selector CSS con el atributo ID.

Sintaxis

css=tag#id

  • etiqueta = la etiqueta HTML del elemento al que se accede
  • # = el signo de almohadilla, que siempre debe estar presente cuando se utiliza un Selenium Selector CSS con ID
  • id = el ID del elemento al que se accede

Tenga en cuenta que el ID siempre va precedido de un signo de almohadilla (#).

Paso 1) Navegue a www.facebook.comUtilizando las herramientas para desarrolladores de tu navegador (o una herramienta mรกs antigua como Firebug), inspecciona el cuadro de texto "Correo electrรณnico o telรฉfono".

Observe que la etiqueta HTML es โ€œLas opciones de entradaโ€ y su ID es โ€œo enviar un email.โ€œ. Por lo tanto, el selector CSS completo se convierte en โ€œcss=entrada#correo electrรณnico".

Etiqueta e ID - Selector CSS en Selenium

Paso 2) Entrar "css=entrada#correo electrรณnico" en el Target caja de Selenium IDE y haga clic en el botรณn Buscar. Selenium El IDE resalta el elemento coincidente en la pรกgina.

Selenium IDE que resalta el campo de correo electrรณnico mediante etiquetas e ID.

Etiqueta y clase: selector CSS

Un selector CSS en Selenium que utiliza una etiqueta HTML y un nombre de clase sigue la misma idea que etiqueta e ID, pero un punto (.) reemplaza el signo de almohadilla.

Sintaxis

css=tag.class

  • etiqueta = la etiqueta HTML del elemento al que se accede
  • . = el signo de punto, que siempre debe estar presente cuando se utiliza un selector CSS con clase
  • clase = la clase del elemento al que se accede

Paso 1) Abra la pรกgina de demostraciรณn https://demo.guru99.com/test/facebook.html e inspeccione el cuadro de texto โ€œCorreo electrรณnico o telรฉfonoโ€. Tenga en cuenta que la etiqueta HTML es โ€œLas opciones de entradaโ€ y su clase es โ€œtexto de entrada".

Etiqueta y clase - Selector CSS en Selenium

Paso 2) In Selenium IDE, ingrese โ€œcss=entrada.texto de entrada"En el Target cuadro y haga clic en Buscar. Selenium El IDE reconoce el cuadro de texto de correo electrรณnico o telรฉfono.

Selenium IDE localizando elementos por etiqueta y clase.

Tenga en cuenta que cuando varios elementos comparten la misma etiqueta HTML y clase, solo se reconoce el primer elemento coincidente en el cรณdigo fuente. Examine el cuadro de texto Contraseรฑa en la misma pรกgina y observe que comparte la misma clase que el cuadro de texto Correo electrรณnico o Telรฉfono.

Mรบltiples elementos que comparten la misma etiqueta y clase.

En la ilustraciรณn anterior, solo se resaltรณ el cuadro de texto de correo electrรณnico o telรฉfono porque aparece primero en el cรณdigo fuente de la pรกgina.

Determinaciรณn del orden de origen de la pรกgina Selenium partido

Etiqueta y atributo โ€“ Selector CSS

Esta estrategia combina una etiqueta HTML con un atributo especรญfico perteneciente al elemento al que se desea acceder.

Sintaxis

css=tag[attribute=value]

  • etiqueta = la etiqueta HTML del elemento al que se accede
  • [ y ] = corchetes que encierran el atributo y su valor correspondiente.
  • atributo = el atributo que se utilizarรก. Elija uno que sea รบnico para el elemento, como nombre o ID.
  • valor = el valor correspondiente del atributo elegido.

Paso 1) Navegue a la pestaรฑa Mercury Pรกgina de registro para visitas guiadas https://demo.guru99.com/test/newtours/register.php y examine el cuadro de texto โ€œApellidoโ€. Observe su etiqueta HTML (โ€œinputโ€) y su atributo de nombre (โ€œlastNameโ€).

Etiqueta y atributo - Selector CSS en Selenium

Paso 2) In Selenium IDE, ingrese โ€œcss=entrada[nombre=apellido]"En el Target cuadro y haga clic en Buscar. Selenium El IDE localiza correctamente el campo Apellido.

Selenium IDE localiza el apellido mediante un atributo.

Cuando varios elementos comparten la misma etiqueta y atributo HTML, solo se reconoce el primero. El comportamiento es idรฉntico al de localizar elementos con la misma etiqueta y clase.

Etiqueta, clase y atributo: selector CSS

Sintaxis

css=tag.class[attribute=value]

  • etiqueta = la etiqueta HTML del elemento al que se accede
  • . = el signo de punto, que siempre debe estar presente cuando se utiliza un selector CSS con clase
  • clase = la clase del elemento al que se accede
  • [ y ] = corchetes que encierran un atributo especรญfico y su valor correspondiente.
  • atributo = el atributo que se utilizarรก. Elija uno que sea รบnico para el elemento, como nombre o ID.
  • valor = el valor correspondiente del atributo elegido.

Paso 1) Abra la pรกgina de demostraciรณn https://demo.guru99.com/test/facebook.html e inspeccione los campos de entrada โ€œCorreo electrรณnico o telรฉfonoโ€ y โ€œContraseรฑaโ€. Anote su etiqueta HTML, clase y atributos. Este ejemplo utiliza la โ€œรญndice de tabulaciรณn" atributo.

Etiqueta, clase y atributo - Selector CSS

Paso 2) Acceda primero al cuadro de texto โ€œCorreo electrรณnico o telรฉfonoโ€ utilizando un valor de tabindex de 1. Introduzca โ€œcss=entrada.texto de entrada[tabindex=1]" dentro Selenium IDE Target En la casilla, haga clic en Buscar. El campo Correo electrรณnico o Telรฉfono se resaltarรก.

Selenium IDE que localiza correos electrรณnicos por etiqueta, clase y atributo.

Paso 3) Para seleccionar el cuadro de entrada de contraseรฑa, simplemente reemplace el valor de tabindex. Ingrese โ€œcss=entrada.texto de entrada[tabindex=2]"En el Target cuadro y haga clic en Buscar. Selenium El IDE localiza correctamente el cuadro de texto de la contraseรฑa.

Selenium IDE que localiza la contraseรฑa por etiqueta, clase y atributo.

Texto interno โ€“ Selector CSS

Las etiquetas HTML rara vez reciben atributos de id, nombre o clase. Entonces, ยฟcรณmo se accede a ellos? SeleniumLa respuesta estรก en su texto interior. Los textos internos son los patrones de cadena reales que la etiqueta HTML muestra en la pรกgina.

Sintaxis

css=tag:contains("inner text")

  • etiqueta = la etiqueta HTML del elemento al que se accede
  • texto interno = el contenido de texto visible del elemento

Paso 1) Navegue a la pestaรฑa Mercury Pรกgina de inicio de excursiones https://demo.guru99.com/test/newtours/ y examine la etiqueta โ€œPasswordโ€. Observe su etiqueta HTML (โ€œfontโ€ en este caso) y compruebe que el elemento no tiene atributos de clase, ID o nombre.

Texto interno - Inspecciรณn del selector CSS

Paso 2) Tipo css=fuente:contiene(โ€œContraseรฑa:โ€) cobren Selenium IDE Target cuadro y haga clic en Buscar. Selenium El IDE localiza la etiqueta Contraseรฑa como se muestra a continuaciรณn.

Selenium IDE localiza la etiqueta de contraseรฑa mediante texto interno.

Paso 3) Esta vez, reemplace el texto interior con โ€œBostonโ€ para que el Target se convierte en โ€œcss=font:contains(โ€œBostonโ€)โ€œ. Haga clic en Buscar. La etiqueta โ€œBoston a San Franciscoโ€ estรก resaltada, lo que demuestra que Selenium El IDE puede localizar una etiqueta larga incluso cuando solo se proporciona la primera palabra de su texto interno.

Selenium Coincidencia parcial de texto interno del IDE

Selector CSS vs XPath en Selenium

Tanto los selectores CSS como XPath se utilizan para identificar elementos web en SeleniumSin embargo, presentan diferentes fortalezas. La siguiente tabla compara las dos estrategias de localizaciรณn en dimensiones clave:

Criterios Selector de CSS XPath
Velocidad Mรกs rรกpido, funciona con el motor nativo del navegador. Mรกs lento, especialmente en navegadores antiguos.
SENTIDO DE SALIDA: Solo hacia adelante (de padre a hijo) Hacia adelante y hacia atrรกs (del niรฑo al padre)
Sintaxis Mรกs cortas y similares a las reglas CSS. Expresiones de ruta mรกs largas y jerรกrquicas
Coincidencia de texto Limitado a la pseudoclase :contains() Funciones Strong text() y contains()
Mejores para Diseรฑos estรกticos y aplicaciones web modernas Recorrido complejo del DOM y localizadores basados โ€‹โ€‹en texto

Mejores prรกcticas para escribir selectores CSS en Selenium

Escribir selectores CSS confiables va mรกs allรก de conocer la sintaxis. Las siguientes prรกcticas ayudan a los evaluadores a crear selectores CSS estables y mantenibles. Selenium Scripts que se conservan tras los cambios en la interfaz de usuario:

  1. Preferir atributos รบnicos: Siempre seleccione los atributos id, data-test-id o name que se agregan explรญcitamente para la automatizaciรณn. Estos se mantienen estables incluso cuando cambia el diseรฑo visual.
  2. Evite los selectores excesivamente anidados: Cadenas largas como div > div > ul > li > a Se rompen fรกcilmente cuando los desarrolladores refactorizan el marcado. Mantรฉn los selectores lo mรกs cortos posible.
  3. Utilice las coincidencias parciales con prudencia: Patrones como [class*="btn-primary"] Toleran pequeรฑos cambios en los nombres de las clases, pero tambiรฉn pueden coincidir con elementos no deseados.
  4. Evite los localizadores basados โ€‹โ€‹en รญndices: Selectores como nth-child(3) son frรกgiles porque al aรฑadir un elemento hermano se desplaza cada posiciรณn.
  5. Validar selectores en DevTools: Antes de ejecutar un Selenium script, pegue el selector en la consola de herramientas para desarrolladores de Chrome usando document.querySelector() para confirmar que devuelve exactamente un elemento.
  6. Combina atributos para lograr un producto รบnico: Cuando una clase es compartida por muchos elementos, agregue un filtro de atributo como por ejemplo: input.form-control[name="email"] para desambiguar el objetivo.
  7. Documentar y reutilizar: Centraliza los selectores dentro de una clase Page Object para que una sola actualizaciรณn corrija todas las pruebas que hagan referencia al mismo elemento.

Seguir estas pautas reduce la inestabilidad, mejora la velocidad de ejecuciรณn de las pruebas y hace que... Selenium suites mรกs fรกciles de mantener con el tiempo.

Resumen: Guรญa rรกpida de sintaxis de selectores CSS

La tabla a continuaciรณn consolida todos Selenium Patrรณn de selector CSS que se trata en esta guรญa:

Mรฉtodo Target Sintaxis Ejemplo
Etiqueta e identificaciรณn css=etiqueta#id css=entrada#correo electrรณnico
Etiqueta y clase css=etiqueta.clase css=entrada.texto de entrada
Etiqueta y atributo css=etiqueta[atributo=valor] css=entrada[nombre=apellido]
Etiqueta, clase y atributo css=etiqueta.clase[atributo=valor] css=entrada.texto de entrada[tabindex=1]
Texto interno css=tag:contains(โ€œtextโ€) css=fuente:contiene(โ€œContraseรฑa:โ€)

Preguntas Frecuentes

Sรญ. Los selectores CSS generalmente se ejecutan mรกs rรกpido que XPath porque los navegadores procesan las reglas CSS de forma nativa. La diferencia es mรกs notoria en versiones antiguas de Internet Explorer, mientras que los navegadores modernos como Chrome y Firefox reducir la brecha.

Sรญ. Selectores CSS escritos para Selenium IDE funciona directamente en Selenium WebDriver a travรฉs de By.cssSelector()La รบnica diferencia es que WebDriver no requiere el prefijo โ€œcss=โ€, ya que el tipo de localizador lo especifica el propio mรฉtodo.

No. Firebug se descontinuรณ en 2017 despuรฉs de fusionarse con Firefox Herramientas para desarrolladores. Hoy en dรญa, los evaluadores utilizan las herramientas para desarrolladores integradas en Chrome, Firefoxo Edge para inspeccionar elementos y validar selectores CSS antes de agregarlos a Selenium scripts.

Sรญ. Herramientas impulsadas por IA como TestimMabl y ChatGPT pueden sugerir selectores CSS analizando el DOM. Reducen el esfuerzo de mantenimiento al adaptar los selectores cuando los desarrolladores cambian el nombre de las clases o reestructuran la pรกgina.

Los motores de autorreparaciรณn basados โ€‹โ€‹en IA analizan el DOM circundante y se recuperan automรกticamente de los localizadores daรฑados. Cuando un selector CSS falla, el motor identifica el elemento mรกs similar mediante la similitud de atributos, el contenido del texto y los patrones histรณricos, restableciendo asรญ la estabilidad de la prueba.

Utilice patrones de coincidencia parcial como [id^="user_"] para prefijos, [id$="_btn"] para sufijos, o [id*="cart"] para subcadenas. Estos patrones coinciden con identificadores generados dinรกmicamente sin requerir un valor exacto.

Los selectores CSS no permiten recorrer elementos desde un elemento hijo hasta su padre y ofrecen una compatibilidad limitada con la coincidencia de texto. Para estos casos, XPath sigue siendo la mejor opciรณn. CSS tambiรฉn carece de funciones integradas para la lรณgica de hermanos mรกs allรก de los hermanos adyacentes y generales.

Abre las herramientas para desarrolladores del navegador, cambia a la pestaรฑa Consola y ejecuta document.querySelectorAll("your-selector")La lista de nodos devuelta muestra todos los elementos coincidentes. Una confiable Selenium El localizador debe devolver exactamente un elemento para una segmentaciรณn รบnica.

Resumir este post con: