Kako provjeriti Tooltip u Selenium

โšก Pametni saลพetak

Provjerite opis alata u Selenium WebDriver pokriva dva pouzdana obrasca za navoฤ‘enje teksta opisa: izravno ฤitanje HTML atributa title i koriลกtenje Actions API-ja za zadrลพavanje pokazivaฤa iznad elemenata koji prikazuju dinamiฤki JavaOpisi alata za skripte ili jQuery.

  • ๐Ÿ’ก Kljuฤni princip: Opis alata je tekst koji se prikazuje prilikom zadrลพavanja pokazivaฤa miลกa, pa strategija provjere ovisi o tome gdje preglednik pohranjuje taj tekst u DOM-u.
  • ๐Ÿท๏ธ Statiฤki opisi alata: Za HTML opise temeljene na naslovu, pozovite getAttribute("title") or getDomAttribute("title") i usporedite s oฤekivanim nizom.
  • ๐Ÿ–ฑ๏ธ Dinamiฤki opisi alata: Za jQuery, CSS ili opise dodataka koristite klasu Actions s moveToElement(target).build().perform() prije ฤitanja elementa tooltip.
  • ๐Ÿ‡ง๐Ÿ‡ท Najbolja vjeลพba: Priฤekajte da spremnik s opisom postane vidljiv nakon zadrลพavanja pokazivaฤa miลกa, a zatim potvrdite tekst s getText() kako bi se izbjegla zastarjela ili prazna oฤitavanja.
  • ๐Ÿš€ Selenium Savjet za 4.: Par Selenium Upravitelj s eksplicitnim ฤekanjima umjesto Thread.sleep za stabilne provjere opisa alata bez putanje upravljaฤkog programa.

Provjerite opis alata u Selenium webdriver

Opis alata u Selenium

A Opis alata u Selenium je kratki tekst koji se pojavljuje kada se miลก zadrลพi iznad objekta na web stranici. Objekt moลพe biti poveznica, slika, gumb ili tekstualno podruฤje. Tekst opisa ฤesto daje viลกe informacija o elementu ispod kursora.

Opisi alata tradicionalno su se implementirali kao atribut "title" na elementu. Vrijednost ovog atributa prikazivala se kao opis alata prilikom zadrลพavanja pokazivaฤa miลกa iznad elementa. To je statiฤki tekst koji daje informacije o elementu bez stiliziranja.

Danas je dostupno mnogo dodataka za implementaciju opisa alata. Napredni opisi alata sa stiliziranjem, renderiranjem, slikama i poveznicama izraฤ‘uju se pomoฤ‡u JavaDodaci za skripte ili jQuery ili samo s CSS-om koji sadrลพe opise.

  • Za pristup ili provjeru statiฤkih opisa alata implementiranih putem HTML atributa "title", upotrijebite getAttribute("title") metoda na WebElementu. Vraฤ‡ena vrijednost (tekst opisa) usporeฤ‘uje se s oฤekivanom vrijednoลกฤ‡u radi provjere.
  • Za ostale implementacije opisa alata, upotrijebite "API za napredne interakcije korisnika" koji pruลพa WebDriver za stvaranje efekta zadrลพavanja miลกa iznad elementa, a zatim dohvatite opis alata za element.

Ukratko o API-ju naprednih korisniฤkih interakcija

API za napredne interakcije korisnika otkriva korisniฤke radnje poput povlaฤenja i ispuลกtanja, zadrลพavanja pokazivaฤa miลกa iznad web stranice, viลกestrukog odabira, pritiska i otpuลกtanja tipki te ostale radnje tipkovnice ili miลกa na web stranici.

Moลพete se pozvati na ovo sluลพbena referenca klase Akcije za viลกe detalja o API-ju.

Prije skokaping U scenarije, pogledajmo klase i metode koje su nam potrebne za pomicanje klizaฤa za pomak.

Korak 1) Za koriลกtenje API-ja, uvezite sljedeฤ‡e pakete i klase:

API za napredne korisniฤke interakcije

Korak 2) Kreirajte objekt klase โ€žAkcijeโ€œ i izgradite niz korisniฤkih akcija. Klasa Akcije gradi lanฤane akcije kao ลกto su moveToElement() i dragAndDrop(). Objekt upravljaฤkog programa se prenosi kao parametar njegovom konstruktoru.

API za napredne korisniฤke interakcije

Korak 3) Kreirajte objekt Action pomoฤ‡u metode build() klase "Actions". Pozovite metodu perform() za izvrลกavanje svake akcije u redu ฤekanja na alatu za izradu.

API za napredne korisniฤke interakcije

Vidjeli smo kako koristiti neke od korisniฤkih metoda Action koje pruลพa API: clickAndHold(element), moveByOffset(10, 0) i release(). API nudi joลก mnogo viลกe.

Implementacija opisa alata u odnosu na Selenium Pristup verifikaciji

Vrsta opisa alata Kako se renderira Selenium Pristup
HTML atribut naslova Tekst pohranjen na samom elementu; preglednik se prikazuje prilikom zadrลพavanja miลกa. ฤŒitajte s getAttribute("title") or getDomAttribute("title")Nije potrebno lebdenje.
jQuery / JS dodatak Namjenski div se prikazuje pored elementa prilikom prelaska miลกem preko njega. Koristite akcije moveToElement(target).perform(), priฤekajte, a zatim proฤitajte element tooltip-a s getText().
Opis samo za CSS Pseudoelement ili srodni div se prebacuje s :hover. Pokrenite pokazivaฤ miลกa pomoฤ‡u Akcija i proฤitajte prikazani tekst ili izraฤunati stil.

Kako provjeriti (rukovati) Tooltip u Selenium

Proฤ‘imo kroz pristup i provjeru opisa alata u dva uobiฤajena scenarija:

  • Scenarij 1: Opis alata implementiran je pomoฤ‡u atributa "title".
  • Scenarij 2: Opis alata implementiran je pomoฤ‡u jQuery dodatka.

Scenarij 1: HTML atribut "title"

U ovom sluฤaju koristimo primjer web-mjesta https://demo.guru99.com/test/social-icon.html i provjerite opis ikone "github" u gornjem desnom kutu stranice.

HTML atribut 'title'

Prvo lociramo element, zatim ฤitamo njegov atribut "title" i usporeฤ‘ujemo ga s oฤekivanim tekstom opisa.

Buduฤ‡i da se opis alata nalazi u atributu "title", ne automatiziramo ฤak ni zadrลพavanje miลกa iznad njega; jednostavno dohvaฤ‡amo vrijednost atributa metodom getAttribute().

HTML atribut 'title'

Evo koda:

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

Objaลกnjenje koda:

  1. Pronaฤ‘ite WebElement koji predstavlja ikonu "github".
  2. Proฤitajte njegov atribut "title" metodom getAttribute().
  3. Potvrdite vrijednost u odnosu na oฤekivani tekst opisa.

Selenium 4 savjet: preferiraju getDomAttribute("title") za doslovni HTML atribut i neka Selenium Upravitelj rjeลกava upravljaฤki program umjesto tvrdog kodiranja chromedriver.exe.

Scenarij 2: jQuery dodatak

Mnogi jQuery dodaci implementiraju opise alata, a svaki se prikazuje malo drugaฤije.

Neki dodaci (plugins) uvijek drลพe oznaku opisa pored elementa okidaฤa, dok drugi dinamiฤki stvaraju oznaku "div" kada kursor uฤ‘e u okidaฤ.

Za ovu demonstraciju koristimo stil โ€žjQuery Tools Tooltipโ€œ.

Otvoren https://demo.guru99.com/test/tooltip.htmlZadrลพavanjem pokazivaฤa iznad "Preuzmi odmah" otkriva se napredni opis sa slikom, pozadinom oblaฤiฤ‡a, malom tablicom i vezom na koju se moลพe kliknuti.

Opis jQuery dodatka

Ako pregledate izvorni kod, div koji predstavlja opis alata veฤ‡ se nalazi pored poveznice "Preuzmi odmah". Oznaka skripte ispod kontrolira kada se pojavljuje.

Izvorni kod opisa jQuery dodatka

Sada provjeravamo tekst poveznice prikazan unutar tooltip-a.

Prvo pronaฤ‘ite WebElement za "Preuzmi odmah". Pomoฤ‡u Interactions API-ja pomaknite se na element (zadrลพite pokazivaฤ miลกa iznad). Zatim pronaฤ‘ite WebElement koji se mapira na vezu unutar prikazanog tooltip-a i provjerite njegov tekst u odnosu na oฤekivanu vrijednost.

Provjera opisa alata za jQuery dodatak

Evo koda:

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 Objaลกnjenje:

  1. Pronaฤ‘ite WebElement koji se preslikava na element "Preuzmi odmah" iznad kojeg ฤ‡ete zadrลพati pokazivaฤ miลกa.
  2. Pomoฤ‡u Interactions API-ja zadrลพite kursor iznad opcije "Preuzmi sada".
  3. Nakon ลกto se tooltip vidi, pronaฤ‘ite WebElement koji predstavlja poveznicu unutar tooltip-a (oznaka "a").
  4. Proฤitajte tekst opisa pomoฤ‡u getText() i usporedite je s oฤekivanom vrijednoลกฤ‡u pohranjenom u expectedTooltip.

Pitanja i odgovori

Ako je opis alata izgraฤ‘en pomoฤ‡u HTML atributa title, pozovite getAttribute("title") ili getDomAttribute("title") na WebElementu i usporedite vraฤ‡eni tekst s oฤekivanom vrijednoลกฤ‡u.

Koristite klasu Actions za moveToElement(target).perform(), priฤekajte dok element tooltip ne postane vidljiv, zatim proฤitajte njegov tekst ili atribut pomoฤ‡u getText() i potvrdite vrijednost.

Vraฤ‡a null kada element nema atribut title ili se tekst opisa dinamiฤki prikazuje putem zasebnog diva. Pregledajte DOM i ciljajte stvarni spremnik opisa.

Alati pokretani umjetnom inteligencijom automatski generiraju lokatore, sami se obnavljaju prilikom promjene DOM-a i predlaลพu lebdeฤ‡e sekvence, smanjujuฤ‡i nestabilne testove opisa alata i vrijeme odrลพavanja u razliฤitim preglednicima.

Da. Moderni AI asistenti skeniraju stranicu, otkrivaju elemente na koje se moลพe lebditi miลกem i generiraju spremne za rad. Selenium skripte s tvrdnjama, ลกto znaฤajno smanjuje ruฤni napor skriptiranja za pokrivenost opisa alata.

Saลพmite ovu objavu uz: