Cum se verifică balonul în Selenium

⚡ Rezumat inteligent

Verificați fereastra de instrumente în Selenium WebDriver acoperă două modele fiabile pentru activarea textului tooltip: citirea directă a atributului title HTML și utilizarea API-ului Actions pentru a plasa cursorul peste elementele care se redau dinamic. JavaSugestii de ajutor pentru script sau jQuery.

  • ???? Principiul cheie: Un tooltip este text expus la trecerea cu mouse-ul, deci strategia de verificare depinde de locul în care browserul stochează textul respectiv în DOM.
  • 🏷️ Sugestii statice: Pentru tooltip-uri bazate pe titlu HTML, apelați getAttribute("title") or getDomAttribute("title") și comparați cu șirul așteptat.
  • 🖱️ Sugestii dinamice: Pentru tooltip-uri jQuery, CSS sau plugin-uri, utilizați clasa Actions cu moveToElement(target).build().perform() înainte de a citi elementul tooltip.
  • ⏱️ Cea mai buna practica: Așteptați ca recipientul cu tooltip-uri să devină vizibil după plasarea cursorului, apoi activați textul cu getText() pentru a evita citirile învechite sau goale.
  • 🚀 Selenium Sfat din 4: Pereche Selenium Manager cu așteptări explicite în loc de Thread.sleep pentru verificări stabile, fără căi de driver, ale tooltip-urilor.

Verificați fereastra de instrumente în Selenium webdriver

Sfat instrument în Selenium

A Sfat instrument în Selenium este un text scurt care apare atunci când mouse-ul trece peste un obiect de pe o pagină web. Obiectul poate fi un link, o imagine, un buton sau o zonă de text. Textul tooltip oferă adesea mai multe informații despre elementul de sub cursor.

În mod tradițional, tooltip-urile erau implementate ca atribut „title” pe un element. Valoarea acestui atribut era afișată ca un tooltip la trecerea mouse-ului peste mouse. Acesta este un text static care oferă informații despre element, fără stilizare.

Astăzi, sunt disponibile multe plugin-uri pentru implementarea tooltip-urilor. Tooltip-urile avansate cu stilizare, randare, imagini și link-uri sunt construite folosind JavaPluginuri Script sau jQuery sau cu tooltip-uri doar pentru CSS.

  • Pentru a accesa sau verifica tooltip-urile statice implementate prin atributul HTML „title”, utilizați getAttribute("title") metoda pe WebElement. Valoarea returnată (textul tooltip) este comparată cu o valoare așteptată pentru verificare.
  • Pentru alte implementări de tooltip-uri, utilizați „Advanced User Interactions API” furnizat de WebDriver pentru a crea efectul de trecere a mouse-ului peste element și apoi recuperați tooltip-ul pentru element.

O scurtă prezentare a API-ului Advanced User Interactions

API-ul Advanced User Interactions expune acțiuni ale utilizatorilor precum drag and drop, plasarea cursorului, selecția multiplă, apăsarea și eliberarea tastelor și alte acțiuni de la tastatură sau mouse pe o pagină web.

Vă puteți referi la asta referință oficială a clasei Acțiuni pentru mai multe detalii despre API.

Înainte de jumping În scenarii, să analizăm clasele și metodele de care avem nevoie pentru a muta un element slider cu un offset.

Pas 1) Pentru a utiliza API-ul, importați următoarele pachete și clase:

Advanced User Interactions API

Pas 2) Creați un obiect al clasei „Actions” și construiți secvența de acțiuni ale utilizatorului. Clasa Actions construiește acțiuni înlănțuite, cum ar fi moveToElement() și dragAndDrop(). Obiectul driver este transmis ca parametru constructorului său.

Advanced User Interactions API

Pas 3) Creați un obiect Action folosind metoda build() a clasei „Actions”. Apelați metoda perform() pentru a executa fiecare acțiune din coadă pe builder.

Advanced User Interactions API

Am văzut cum se utilizează unele dintre metodele de acțiune ale utilizatorului furnizate de API: clickAndHold(element), moveByOffset(10, 0) și release(). API-ul expune mult mai multe.

Implementare tooltip vs. Selenium Abordarea de verificare

Tip de tooltip Cum se redă Selenium Abordarea
Atributul titlului HTML Text stocat chiar pe element; browserul îl afișează la trecerea cu mouse-ul. Citește cu getAttribute("title") or getDomAttribute("title")Nu este nevoie să treceți cu mouse-ul peste.
Plugin jQuery / JS Un div dedicat este afișat lângă element la trecerea mouse-ului peste acesta. Utilizați acțiunile moveToElement(target).perform(), așteptați, apoi citiți elementul tooltip cu getText().
Sugestie de instrumente doar pentru CSS Pseudo-element sau div frate activat/dezactivat cu :hover. Declanșează trecerea cu mouse-ul cu Acțiuni și citește textul randat sau stilul calculat.

Cum să verificați (tratați) balonul explicativ în Selenium

Să parcurgem accesarea și verificarea tooltip-urilor în două scenarii comune:

  • Scenariul 1: Tooltip-ul este implementat folosind atributul „title”.
  • Scenariul 2: Tooltip-ul este implementat folosind un plugin jQuery.

Scenariul 1: Atributul HTML „title”

În acest caz, folosim site-ul exemplu https://demo.guru99.com/test/social-icon.html și verificați fereastra de afișare a pictogramei „github” din partea dreaptă sus a paginii.

Atribut HTML „title”.

Mai întâi localizăm elementul, apoi citim atributul său „title” și îl comparăm cu textul așteptat al tooltip-ului.

Deoarece tooltip-ul se află în atributul „title”, nici măcar nu automatizăm trecerea cu mouse-ul; pur și simplu recuperăm valoarea atributului cu metoda getAttribute().

Atribut HTML „title”.

Iată codul:

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

Explicația codului:

  1. Găsiți WebElement care reprezintă pictograma „github”.
  2. Citește atributul său „title” cu metoda getAttribute().
  3. Afirmați valoarea în raport cu textul așteptat al feței de instrumente.

Selenium 4 sfat: Prefera getDomAttribute("title") pentru atributul HTML literal și fie Selenium Managerul rezolvă driverul în loc să îl codeze hardcode chromedriver.exe.

Scenariul 2: Plugin jQuery

Multe pluginuri jQuery implementează tooltip-uri, iar fiecare se afișează puțin diferit.

Unele pluginuri păstrează markup-ul tooltip lângă elementul declanșator în permanență, în timp ce altele creează o etichetă „div” dinamic atunci când cursorul intră pe declanșator.

Pentru această demonstrație, folosim stilul „jQuery Tools Tooltip”.

Operatii Deschise https://demo.guru99.com/test/tooltip.htmlPlasarea cursorului peste „Descărcați acum” dezvăluie o fereastra avansată de instrumente cu o imagine, un fundal pentru explicații, un tabel mic și un link pe care se poate da clic.

Sugestie instrumentală pentru pluginul jQuery

Dacă inspectați codul sursă, elementul div care reprezintă fereastra de instrumente se află deja lângă linkul „Descărcați acum”. Eticheta de script de mai jos controlează momentul în care apare.

Sursa tooltip-ului pluginului jQuery

Acum verificăm textul linkului afișat în tooltip.

Mai întâi, localizați WebElement-ul pentru „Descărcați acum”. Folosiți API-ul Interactions pentru a vă deplasa la element (plasați cursorul mouse-ului). Apoi, găsiți WebElement-ul care corespunde linkului din fereastra de afișare și verificați textul său în raport cu valoarea așteptată.

Verificarea tooltip-ului pluginului jQuery

Iată codul:

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 Explicaţie:

  1. Localizați WebElement-ul care se asociază cu elementul „Descărcați acum” pe care îl veți plasa cu mouse-ul.
  2. Folosește API-ul Interactions pentru a plasa cursorul peste „Descărcare acum”.
  3. După ce tooltip-ul este vizibil, localizați WebElement-ul care reprezintă linkul în interiorul tooltip-ului (eticheta „a”).
  4. Citiți textul tooltip cu getText() și o comparați cu valoarea așteptată stocată în expectedTooltip.

Întrebări frecvente

Dacă tooltip-ul este construit folosind atributul HTML title, apelați getAttribute(„title”) sau getDomAttribute(„title”) pe WebElement și comparați textul returnat cu valoarea așteptată.

Folosește clasa Actions pentru a folosi moveToElement(target).perform(), așteaptă până când elementul tooltip devine vizibil, apoi citește textul sau atributul său cu getText() și activează valoarea.

Returnează null când elementul nu are atributul title sau textul tooltip este redat dinamic printr-un div separat. Inspectați DOM-ul și vizați containerul tooltip propriu-zis.

Instrumentele bazate pe inteligență artificială generează automat locatori, repară automat selectorii atunci când DOM-ul se modifică și sugerează secvențe de trecere a cursorului, reducând testele instabile de tip tooltip și timpul de întreținere în diferite browsere.

Da. Asistenții moderni cu inteligență artificială scanează pagina, detectează elementele care pot fi suprapuse și generează elemente gata de rulare. Selenium scripturi cu aserțiuni, reducând semnificativ efortul manual de scriptare pentru acoperirea tooltip-urilor.

Rezumați această postare cu: