Sådan bekræfter du værktøjstip i Selenium

⚡ Smart opsummering

Bekræft værktøjstip i Selenium WebDriver dækker to pålidelige mønstre til at hævde tooltip-tekst: direkte læsning af HTML-titelattributten og brug af Actions API'en til at holde musen over elementer, der gengives dynamisk. JavaScript- eller jQuery-værktøjstip.

  • 💡 Nøgleprincip: Et værktøjstip er tekst, der vises, når man holder musen over teksten, så verifikationsstrategien afhænger af, hvor browseren gemmer teksten i DOM'en.
  • 🏷️ Statiske værktøjstips: For HTML-titelbaserede værktøjstips, ring getAttribute("title") or getDomAttribute("title") og sammenlign med den forventede streng.
  • 🖱️ Dynamiske værktøjstips: For værktøjstip til jQuery, CSS eller plugins skal du bruge Actions-klassen med moveToElement(target).build().perform() før du læser tooltip-elementet.
  • ⏱️ Bedste praksis: Vent på, at værktøjstipbeholderen bliver synlig efter musepekeren, og aktivér derefter tekst med getText() for at undgå forældede eller tomme læsninger.
  • 🚀 Selenium 4-tip: Par Selenium Manager med eksplicitte ventetider i stedet for Thread.sleep til stabile, driver-sti-fri værktøjstip-tjek.

Bekræft værktøjstip i Selenium webdriver

Værktøjstip i Selenium

A Værktøjstip i Selenium er en kort tekst, der vises, når musen holdes over et objekt på en webside. Objektet kan være et link, et billede, en knap eller et tekstområde. Værktøjstipteksten giver ofte mere information om elementet under markøren.

Værktøjstip blev traditionelt implementeret som en "titel"-attribut på et element. Værdien af ​​denne attribut blev vist som et værktøjstip, når musen blev holdt over det. Dette er en statisk tekst, der giver information om elementet uden styling.

I dag findes der mange plugins til implementering af tooltips. Avancerede tooltips med styling, rendering, billeder og links er bygget ved hjælp af JavaScript- eller jQuery-plugins eller med værktøjstip kun til CSS.

  • For at få adgang til eller verificere statiske værktøjstip implementeret via HTML-attributten "title" skal du bruge getAttribute("title") metode på WebElementet. Den returnerede værdi (værktøjstipteksten) sammenlignes med en forventet værdi for at verificere.
  • For andre implementeringer af værktøjstip skal du bruge "Advanced User Interactions API" fra WebDriver til at oprette musepekereffekten og derefter hente værktøjstippet til elementet.

Kort om Advanced User Interactions API

Advanced User Interactions API viser brugerhandlinger som træk og slip, hold musen over tastaturet, multivalg, tastetryk og -slip samt andre tastatur- eller musehandlinger på en webside.

Du kan henvise til dette officiel reference for Actions-klassen for flere detaljer om API.

Før springping I scenarier, lad os se på de klasser og metoder, vi har brug for til at flytte et slider-element med en forskydning.

Trin 1) For at bruge API'en skal du importere følgende pakker og klasser:

Advanced User Interactions API

Trin 2) Opret et objekt af klassen "Actions" og byg sekvensen af ​​brugerhandlinger. Klassen Actions bygger kædede handlinger såsom moveToElement() og dragAndDrop(). Driverobjektet sendes som en parameter til dets konstruktør.

Advanced User Interactions API

Trin 3) Opret et Action-objekt ved hjælp af build()-metoden fra klassen "Actions". Kald perform()-metoden for at udføre alle handlinger i køen på builderen.

Advanced User Interactions API

Vi har set, hvordan man bruger nogle af de brugerhandlingsmetoder, der stilles til rådighed af API'en: clickAndHold(element), moveByOffset(10, 0) og release(). API'en eksponerer mange flere.

Tooltip-implementering vs. Selenium Verifikationsmetode

Værktøjstiptype Hvordan det gengives Selenium Tilgang
HTML-titelattribut Tekst gemmes på selve elementet; browseren vises, når man holder musen over det. Læs med getAttribute("title") or getDomAttribute("title"). Ingen musepeker nødvendig.
jQuery / JS-plugin En dedikeret div vises ved siden af ​​elementet, når musen holdes over det. Brug handlinger moveToElement(target).perform(), vent, og læs derefter værktøjstip-elementet med getText().
Kun CSS-værktøjstip Pseudo-element eller sibling div slået til/fra med :hover. Udløs musepekeren med Handlinger og læs den gengivne tekst eller den beregnede stil.

Sådan bekræftes (håndterer) værktøjstip i Selenium

Lad os gennemgå adgang til og verificering af værktøjstip med to almindelige scenarier:

  • Scenarie 1: Værktøjstip implementeres ved hjælp af attributten "title".
  • Scenarie 2: Værktøjstip implementeres ved hjælp af et jQuery-plugin.

Scenarie 1: HTML-attributten "titel"

I dette tilfælde bruger vi eksempelwebstedet https://demo.guru99.com/test/social-icon.html og kontroller værktøjstippet på "github"-ikonet øverst til højre på siden.

HTML 'title'-attribut

Vi finder først elementet, aflæser derefter dets "title"-attribut og sammenligner det med den forventede tooltip-tekst.

Fordi værktøjstippet er i attributten "title", automatiserer vi ikke engang musepegeren; vi henter blot attributværdien med metoden getAttribute().

HTML 'title'-attribut

Her er koden:

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();
    }
}

Forklaring af kode:

  1. Find det WebElement, der repræsenterer "github"-ikonet.
  2. Læs dens "title"-attribut med getAttribute()-metoden.
  3. Angiv værdien i forhold til den forventede værktøjstiptekst.

Selenium 4 tip: Foretrække getDomAttribute("title") for den litterale HTML-attribut, og lad Selenium Manager løser driveren i stedet for hardcode chromedriver.exe.

Scenarie 2: jQuery-plugin

Mange jQuery-plugins implementerer værktøjstip, og hver enkelt gengives lidt forskelligt.

Nogle plugins holder tooltip-markeringen ved siden af ​​trigger-elementet hele tiden, mens andre opretter et "div"-tag dynamisk, når markøren kommer ind på triggeren.

Til denne demonstration bruger vi stilen "jQuery Tools Tooltip".

Åbne https://demo.guru99.com/test/tooltip.htmlHvis du holder musen over "Download nu", vises et avanceret værktøjstip med et billede, en baggrund med billedforklaringer, en lille tabel og et klikbart link.

Værktøjstip til jQuery-plugin

Hvis du undersøger kildekoden, sidder div'en, der repræsenterer tooltip'et, allerede ved siden af ​​linket "Download nu". Script-tagget nedenfor styrer, hvornår det vises.

Kilde til værktøjstip til jQuery-plugin

Nu verificerer vi linkteksten, der vises i værktøjstippet.

Find først WebElementet for "Download nu". Brug Interactions API'en til at flytte til elementet (hold musen over). Find derefter det WebElement, der er knyttet til linket i det viste værktøjstip, og verificer dets tekst mod den forventede værdi.

Verifikation af værktøjstip til jQuery-plugin

Her er koden:

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 Forklaring:

  1. Find det WebElement, der er knyttet til det "Download nu"-element, du holder musen over.
  2. Brug Interactions API'en til at holde markøren over "Download nu".
  3. Når værktøjstippet er synligt, skal du finde det WebElement, der repræsenterer linket i værktøjstippet ("a"-tagget).
  4. Læs værktøjstipteksten med getText() og sammenlign den med den forventede værdi, der er gemt i expectedTooltip.

Ofte Stillede Spørgsmål

Hvis værktøjstippet er bygget ved hjælp af HTML-attributten title, skal du kalde getAttribute("title") eller getDomAttribute("title") på WebElementet og sammenligne den returnerede tekst med den forventede værdi.

Brug Actions-klassen til at moveToElement(target).perform(), vent indtil tooltip-elementet bliver synligt, læs derefter dets tekst eller attribut med getText() og angiv værdien.

Den returnerer null, når elementet ikke har en titelattribut, eller tooltip-teksten gengives dynamisk via en separat div. Undersøg DOM'en, og målret den faktiske tooltip-container.

AI-drevne værktøjer genererer automatisk locators, selvreparerende selektorer, når DOM'en ændres, og foreslår svævesekvenser, hvilket reducerer ustabile tooltip-tests og vedligeholdelsestid på tværs af browsere.

Ja. Moderne AI-assistenter scanner siden, registrerer elementer, der kan bevæges over siden, og genererer køreklare elementer. Selenium scripts med assertions, hvilket reducerer den manuelle scriptingindsats til dækning af værktøjstip betydeligt.

Opsummer dette indlæg med: