Cómo verificar la información sobre herramientas en Selenium

⚡ Resumen inteligente

Verificar la información sobre herramientas en Selenium WebDriver cubre dos patrones confiables para afirmar el texto de la información sobre herramientas: leer directamente el atributo de título HTML y usar la API de acciones para pasar el cursor sobre elementos que se renderizan dinámicamente. JavaInformación sobre herramientas mediante scripts o jQuery.

  • ???? Principio clave: Un tooltip es un texto que se muestra al pasar el ratón por encima, por lo que la estrategia de verificación depende de dónde almacene el navegador ese texto en el DOM.
  • 🏷️ Información sobre herramientas estática: Para obtener información sobre herramientas basada en títulos HTML, llame a getAttribute("title") or getDomAttribute("title") y comparar con la cadena esperada.
  • 🖱️ Información sobre herramientas dinámica: Para información sobre herramientas de jQuery, CSS o complementos, utilice la clase Actions con moveToElement(target).build().perform() antes de leer el elemento de información sobre herramientas.
  • 🇧🇷 Mejora la práctica: Espere a que el contenedor de información sobre herramientas se vuelva visible después de pasar el cursor por encima, luego asegure el texto con getText() para evitar lecturas obsoletas o vacías.
  • 🚀 Selenium 4 Consejo: Vincular Selenium Administrador con esperas explícitas en lugar de Thread.sleep para comprobaciones de información sobre herramientas estables y sin depender de la ruta del controlador.

Verificar la información sobre herramientas en Selenium Controlador web

Información sobre herramientas en Selenium

A Información sobre herramientas en Selenium Es un texto breve que aparece al pasar el cursor sobre un objeto en una página web. El objeto puede ser un enlace, una imagen, un botón o un área de texto. El texto emergente suele proporcionar más información sobre el elemento sobre el que se encuentra el cursor.

Las sugerencias emergentes se implementaban tradicionalmente como un atributo "title" en un elemento. El valor de este atributo se mostraba como una sugerencia emergente al pasar el ratón por encima. Se trataba de un texto estático que proporcionaba información sobre el elemento sin ningún estilo.

Hoy en día, hay muchos complementos disponibles para la implementación de información sobre herramientas. Se crean información sobre herramientas avanzada con estilos, renderizado, imágenes y enlaces utilizando JavaComplementos de script o jQuery, o con información sobre herramientas solo con CSS.

  • Para acceder o verificar las sugerencias de herramientas estáticas implementadas a través del atributo HTML “title”, utilice el getAttribute("title") Método en el elemento web. El valor devuelto (el texto de la información sobre herramientas) se compara con un valor esperado para su verificación.
  • Para otras implementaciones de información sobre herramientas, utilice la "API de interacciones avanzadas con el usuario" proporcionada por WebDriver para crear el efecto de desplazamiento del ratón y, a continuación, recuperar la información sobre herramientas del elemento.

Un resumen de la API de interacciones avanzadas de usuario

La API de interacciones avanzadas del usuario expone acciones del usuario como arrastrar y soltar, pasar el cursor por encima, seleccionar varios elementos, pulsar y soltar teclas, y otras acciones de teclado o ratón en una página web.

Puedes referirte a esto Referencia oficial de la clase Actions para obtener más detalles sobre la API.

Antes de saltarping Analicemos los escenarios y veamos las clases y los métodos que necesitamos para mover un elemento deslizante con un desplazamiento.

Paso 1) Para utilizar la API, importe los siguientes paquetes y clases:

API de interacciones de usuario avanzadas

Paso 2) Crea un objeto de la clase "Acciones" y construye la secuencia de acciones del usuario. La clase Acciones crea acciones encadenadas como moveToElement() y dragAndDrop(). El objeto controlador se pasa como parámetro a su constructor.

API de interacciones de usuario avanzadas

Paso 3) Crea un objeto Action usando el método build() de la clase “Actions”. Llama al método perform() para ejecutar cada acción en cola en el constructor.

API de interacciones de usuario avanzadas

Hemos visto cómo usar algunos de los métodos de acción de usuario que proporciona la API: clickAndHold(element), moveByOffset(10, 0) y release(). La API ofrece muchos más.

Implementación de información sobre herramientas vs. Selenium Enfoque de verificación

Tipo de información sobre herramientas Cómo se renderiza Selenium Nuevo enfoque
atributo de título HTML Texto almacenado en el propio elemento; el navegador lo muestra al pasar el cursor por encima. Leer con getAttribute("title") or getDomAttribute("title")No es necesario pasar el cursor por encima.
Complemento jQuery/JS Al pasar el ratón por encima del elemento, se muestra un div dedicado junto a él. Usar acciones moveToElement(target).perform(), espera, luego lee el elemento de información sobre herramientas con getText().
Información sobre herramientas solo con CSS Pseudoelemento o div hermano alternado con :hover. Activa el efecto hover con Acciones y lee el texto renderizado o el estilo calculado.

Cómo verificar (manejar) la información sobre herramientas en Selenium

Analicemos cómo acceder y verificar las sugerencias emergentes con dos escenarios comunes:

  • Escenario 1: La información sobre herramientas se implementa utilizando el atributo "título".
  • Escenario 2: La información sobre herramientas se implementa mediante un complemento de jQuery.

Escenario 1: Atributo HTML “title”

Para este caso, utilizamos el sitio de ejemplo https://demo.guru99.com/test/social-icon.html y verifique la información emergente del icono de “github” en la parte superior derecha de la página.

Atributo HTML 'título'

Primero localizamos el elemento, luego leemos su atributo "título" y lo comparamos con el texto de la información sobre herramientas esperado.

Dado que la información sobre herramientas se encuentra en el atributo "title", ni siquiera automatizamos el evento de pasar el ratón por encima; simplemente recuperamos el valor del atributo con el método getAttribute().

Atributo HTML 'título'

Aquí está el código:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.*;

public class ToolTip {
    public static void main(String[] args) {

        String baseUrl = "https://demo.guru99.com/test/social-icon.html";
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get(baseUrl);
        String expectedTooltip = "Github";

        // Find the Github icon at the top right of the header
        WebElement github = driver.findElement(By.xpath(".//*[@class='soc-ico show-round']/a[4]"));

        // Read the "title" attribute value of the Github icon
        String actualTooltip = github.getAttribute("title");

        // Assert that the tooltip value matches the expected one
        System.out.println("Actual Title of Tool Tip " + actualTooltip);
        if (actualTooltip.equals(expectedTooltip)) {
            System.out.println("Test Case Passed");
        }
        driver.close();
    }
}

Explicación del código:

  1. Busque el WebElement que representa el icono "github".
  2. Lee su atributo “título” con el método getAttribute().
  3. Comprometer el valor con el texto de información sobre herramientas esperado.

Selenium 4 consejo: Utilice getDomAttribute("title") para el atributo HTML literal, y dejar Selenium El administrador resuelve el controlador en lugar de codificarlo manualmente. chromedriver.exe.

Escenario 2: Complemento jQuery

Muchos complementos de jQuery implementan información sobre herramientas, y cada uno se muestra de forma ligeramente diferente.

Algunos complementos mantienen el marcado de la información sobre herramientas junto al elemento activador en todo momento, mientras que otros crean una etiqueta "div" dinámicamente cuando el cursor entra en el elemento activador.

Para esta demostración, utilizamos el estilo "jQuery Tools Tooltip".

Abra https://demo.guru99.com/test/tooltip.htmlAl pasar el cursor sobre "Descargar ahora", se muestra una información emergente avanzada con una imagen, un fondo destacado, una pequeña tabla y un enlace en el que se puede hacer clic.

Información sobre herramientas del plugin jQuery

Si examinas el código fuente, verás que el div que representa la información emergente ya está ubicado junto al enlace "Descargar ahora". La etiqueta de script que aparece a continuación controla cuándo se muestra.

Código fuente de la información sobre herramientas del plugin jQuery

Ahora verificamos el texto del enlace que se muestra dentro de la información emergente.

Primero, localiza el elemento web "Descargar ahora". Usa la API de interacciones para moverte al elemento (pasar el ratón por encima). A continuación, encuentra el elemento web que se corresponde con el enlace dentro de la información sobre herramientas que se muestra y verifica que su texto coincida con el valor esperado.

Verificación de la información sobre herramientas del complemento jQuery

Aquí está el código:

import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.*;

public class JqueryToolTip {
    public static void main(String[] args) {

        String baseUrl = "https://demo.guru99.com/test/tooltip.html";
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");

        WebDriver driver = new ChromeDriver();
        String expectedTooltip = "What's new in 3.2";
        driver.get(baseUrl);

        WebElement download = driver.findElement(By.xpath(".//*[@id='download_now']"));
        Actions builder = new Actions(driver);

        // Hover over the "Download now" link to reveal the tooltip
        builder.moveToElement(download).build().perform();

        WebElement toolTipElement = driver.findElement(By.xpath(".//*[@class='box']/div/a"));
        String actualTooltip = toolTipElement.getText();

        System.out.println("Actual Title of Tool Tip " + actualTooltip);
        if (actualTooltip.equals(expectedTooltip)) {
            System.out.println("Test Case Passed");
        }
        driver.close();
    }
}

Code Explicación:

  1. Localiza el elemento web que se corresponde con el elemento "Descargar ahora" sobre el que pasarás el ratón.
  2. Utilice la API de interacciones para colocar el cursor sobre "Descargar ahora".
  3. Una vez que la información sobre herramientas sea visible, localice el elemento web que representa el enlace dentro de la información sobre herramientas (la etiqueta "a").
  4. Lea el texto de la información sobre herramientas con getText() y compararlo con el valor esperado almacenado en expectedTooltip.

Preguntas Frecuentes

Si la información sobre herramientas se crea utilizando el atributo de título HTML, llame a getAttribute(“title”) o getDomAttribute(“title”) en el elemento web y compare el texto devuelto con el valor esperado.

Utilice la clase Actions para ejecutar moveToElement(target).perform(), espere hasta que el elemento tooltip sea visible, luego lea su texto o atributo con getText() y verifique el valor.

Devuelve null cuando el elemento no tiene atributo title o el texto de la información sobre herramientas se genera dinámicamente a través de un div independiente. Inspeccione el DOM y seleccione el contenedor de la información sobre herramientas.

Las herramientas con inteligencia artificial generan localizadores automáticamente, reparan los selectores cuando cambia el DOM y sugieren secuencias al pasar el cursor, lo que reduce las pruebas de información sobre herramientas poco fiables y el tiempo de mantenimiento en los distintos navegadores.

Sí. Los asistentes de IA modernos escanean la página, detectan elementos interactivos y generan contenido listo para ejecutar. Selenium scripts con aserciones, lo que reduce significativamente el esfuerzo de scripting manual para la cobertura de información sobre herramientas.

Resumir este post con: