So überprüfen Sie den Tooltip in Selenium

⚡ Intelligente Zusammenfassung

Überprüfen Sie den Tooltip in Selenium WebDriver bietet zwei zuverlässige Methoden zur Anzeige von Tooltip-Texten: das direkte Auslesen des HTML-Attributs `title` und die Verwendung der Actions API zum Hovern über dynamisch gerenderte Elemente. JavaSkript- oder jQuery-Tooltips.

  • 💡 Grundprinzip: Ein Tooltip ist ein Text, der beim Überfahren mit der Maus angezeigt wird. Die Verifizierungsstrategie hängt daher davon ab, wo der Browser diesen Text im DOM speichert.
  • 🏷️ Statische Tooltips: Für HTML-Titel-basierte Tooltips rufen Sie auf getAttribute("title") or getDomAttribute("title") und vergleichen Sie mit der erwarteten Zeichenkette.
  • 🖱️ Dynamische Tooltips: Für jQuery-, CSS- oder Plugin-Tooltips verwenden Sie die Actions-Klasse mit moveToElement(target).build().perform() vor dem Lesen des Tooltip-Elements.
  • ️ Best Practice: Warten Sie, bis der Tooltip-Container nach dem Hovern sichtbar wird, und überprüfen Sie dann den Text mit getText() um veraltete oder leere Lesevorgänge zu vermeiden.
  • 🚀 Selenium 4 Tipp: Paar Selenium Manager mit expliziten Wartezeiten anstelle von Thread.sleep für stabile, treiberpfadfreie Tooltip-Prüfungen.

Überprüfen Sie den Tooltip in Selenium WebTreiber

Tooltip ein Selenium

A Tooltip ein Selenium Ein Tooltip ist ein kurzer Text, der erscheint, wenn man mit der Maus über ein Objekt auf einer Webseite fährt. Bei diesem Objekt kann es sich um einen Link, ein Bild, eine Schaltfläche oder ein Textfeld handeln. Der Tooltip-Text liefert oft zusätzliche Informationen über das Element unter dem Cursor.

Tooltips wurden traditionell als „title“-Attribut eines Elements implementiert. Der Wert dieses Attributs wurde beim Überfahren mit der Maus als Tooltip angezeigt. Es handelte sich dabei um einen statischen Text, der Informationen über das Element ohne Formatierung lieferte.

Heute stehen zahlreiche Plugins zur Implementierung von Tooltips zur Verfügung. Erweiterte Tooltips mit Styling, Rendering, Bildern und Links werden mithilfe von [hier fehlende Information] erstellt. JavaSkript- oder jQuery-Plugins oder Tooltips, die ausschließlich auf CSS basieren.

  • Um auf statische Tooltips zuzugreifen oder diese zu überprüfen, die über das HTML-Attribut „title“ implementiert wurden, verwenden Sie die getAttribute("title") Die Methode des WebElements wird aufgerufen. Der zurückgegebene Wert (der Tooltip-Text) wird zur Überprüfung mit einem erwarteten Wert verglichen.
  • Für andere Tooltip-Implementierungen verwenden Sie die von WebDriver bereitgestellte „Advanced User Interactions API“, um den Mouse-Hover-Effekt zu erzeugen und anschließend den Tooltip für das Element abzurufen.

Eine kurze Beschreibung der Advanced User Interactions API

Die Advanced User Interactions API ermöglicht die Nutzung von Benutzeraktionen wie Drag & Drop, Hovern, Mehrfachauswahl, Tastendruck und -loslassen sowie anderen Tastatur- oder Mausaktionen auf einer Webseite.

Sie können sich darauf beziehen offizielle Klassenreferenz für Aktionen Weitere Informationen zur API.

Vor dem Sprungping Um in verschiedene Szenarien zu gelangen, wollen wir uns die Klassen und Methoden ansehen, die wir benötigen, um ein Slider-Element um einen Offset zu verschieben.

Schritt 1) Um die API zu verwenden, importieren Sie die folgenden Pakete und Klassen:

Erweiterte Benutzerinteraktions-API

Schritt 2) Erstellen Sie ein Objekt der Klasse „Actions“ und definieren Sie die Abfolge der Benutzeraktionen. Die Klasse „Actions“ ermöglicht die Verkettung von Aktionen wie moveToElement() und dragAndDrop(). Das Treiberobjekt wird als Parameter an den Konstruktor übergeben.

Erweiterte Benutzerinteraktions-API

Schritt 3) Erstellen Sie ein Action-Objekt mithilfe der build()-Methode der Klasse „Actions“. Rufen Sie die perform()-Methode auf, um alle in der Warteschlange befindlichen Aktionen des Builders auszuführen.

Erweiterte Benutzerinteraktions-API

Wir haben gesehen, wie man einige der von der API bereitgestellten Benutzeraktionsmethoden verwendet: clickAndHold(element), moveByOffset(10, 0) und release(). Die API stellt noch viele weitere bereit.

Tooltip-Implementierung vs. Selenium Verifikationsansatz

Tooltip-Typ Wie es gerendert wird Selenium Ansatz
HTML-Titelattribut Der Text ist im Element selbst gespeichert; der Browser zeigt ihn beim Überfahren mit der Maus an. Lesen Sie mit getAttribute("title") or getDomAttribute("title")Kein Hovern erforderlich.
jQuery / JS-Plugin Beim Überfahren mit der Maus wird neben dem Element ein separater Div-Container angezeigt. Aktionen verwenden moveToElement(target).perform()Warten Sie, und lesen Sie dann das Tooltip-Element mit getText().
CSS-Tooltip Pseudoelement oder Geschwister-Div umgeschaltet mit :hover. Löse den Hover-Effekt mit Aktionen aus und lies den gerenderten Text oder den berechneten Stil.

So überprüfen (behandeln) Sie den Tooltip in Selenium

Lassen Sie uns anhand zweier gängiger Szenarien den Zugriff auf und die Überprüfung von Tooltips durchgehen:

  • Szenario 1: Tooltip wird mithilfe des Attributs „title“ implementiert.
  • Szenario 2: Tooltip wird mithilfe eines jQuery-Plugins implementiert.

Szenario 1: HTML-Attribut „title“

In diesem Fall verwenden wir die Beispielseite https://demo.guru99.com/test/social-icon.html und überprüfen Sie den Tooltip des „github“-Symbols oben rechts auf der Seite.

HTML-Attribut „title“.

Wir lokalisieren zuerst das Element, lesen dann sein „title“-Attribut und vergleichen es mit dem erwarteten Tooltip-Text.

Da sich der Tooltip im Attribut „title“ befindet, automatisieren wir nicht einmal das Mouseover; wir rufen den Attributwert einfach mit der Methode getAttribute() ab.

HTML-Attribut „title“.

Hier ist der Code:

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

Erklärung des Codes:

  1. Suchen Sie das WebElement, das das „Github“-Symbol darstellt.
  2. Lesen Sie das „title“-Attribut mit der Methode getAttribute().
  3. Vergleichen Sie den Wert mit dem erwarteten Tooltip-Text.

Selenium 4 Tipp: Bevorzugen getDomAttribute("title") für das wörtliche HTML-Attribut und lassen Selenium Der Manager löst den Treiber auf, anstatt ihn fest zu codieren. chromedriver.exe.

Szenario 2: jQuery-Plugin

Viele jQuery-Plugins implementieren Tooltips, und jedes einzelne wird etwas anders dargestellt.

Manche Plugins behalten die Tooltip-Markup-Informationen stets neben dem Auslöser-Element bei, während andere ein „div“-Tag dynamisch erstellen, sobald der Cursor in den Auslöser eintritt.

Für diese Demonstration verwenden wir den Stil „jQuery Tools Tooltip“.

Öffne https://demo.guru99.com/test/tooltip.htmlBeim Überfahren von „Jetzt herunterladen“ mit der Maus wird ein erweiterter Tooltip mit einem Bild, einem Hintergrund mit Beschriftung, einer kleinen Tabelle und einem anklickbaren Link angezeigt.

jQuery-Plugin-Tooltip

Im Quelltext befindet sich das Div-Element für den Tooltip bereits neben dem Link „Jetzt herunterladen“. Das darunter stehende Skript-Tag steuert dessen Anzeige.

jQuery Plugin Tooltip Quellcode

Nun überprüfen wir den im Tooltip angezeigten Linktext.

Suchen Sie zunächst das WebElement für „Jetzt herunterladen“. Verwenden Sie die Interactions API, um zum Element zu navigieren (Mauszeiger). Suchen Sie anschließend das WebElement, das dem Link im angezeigten Tooltip zugeordnet ist, und vergleichen Sie dessen Text mit dem erwarteten Wert.

jQuery-Plugin-Tooltip-Überprüfung

Hier ist der Code:

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 Erläuterung:

  1. Suchen Sie das WebElement, das dem Element „Jetzt herunterladen“ entspricht, über das Sie mit der Maus fahren.
  2. Verwenden Sie die Interactions API, um den Cursor auf „Jetzt herunterladen“ zu bewegen.
  3. Sobald der Tooltip sichtbar ist, suchen Sie das WebElement, das den Link innerhalb des Tooltips darstellt (das „a“-Tag).
  4. Lesen Sie den Tooltip-Text mit getText() und vergleichen Sie ihn mit dem in gespeicherten Erwartungswert. expectedTooltip.

Häufig gestellte Fragen

Wenn der Tooltip mithilfe des HTML-Attributs title erstellt wurde, rufen Sie getAttribute(“title”) oder getDomAttribute(“title”) für das WebElement auf und vergleichen Sie den zurückgegebenen Text mit dem erwarteten Wert.

Verwenden Sie die Actions-Klasse, um moveToElement(target).perform() aufzurufen, warten Sie, bis das Tooltip-Element sichtbar wird, und lesen Sie dann dessen Text oder Attribut mit getText() aus und überprüfen Sie den Wert.

Die Funktion gibt null zurück, wenn das Element kein title-Attribut besitzt oder der Tooltip-Text dynamisch in einem separaten div-Element gerendert wird. Untersuchen Sie das DOM und suchen Sie den eigentlichen Tooltip-Container.

KI-gestützte Tools generieren automatisch Locators, reparieren Selektoren selbst, wenn sich das DOM ändert, und schlagen Hover-Sequenzen vor, wodurch fehleranfällige Tooltip-Tests und der Wartungsaufwand browserübergreifend reduziert werden.

Ja. Moderne KI-Assistenten scannen die Seite, erkennen Elemente, über die man mit der Maus fahren kann, und generieren sofort ausführbare Inhalte. Selenium Skripte mit Zusicherungen, wodurch der manuelle Skriptaufwand für die Tooltip-Abdeckung erheblich reduziert wird.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: