Hur du verifierar verktygstips i Selenium

โšก Smart sammanfattning

Verifiera verktygstips i Selenium WebDriver tรคcker tvรฅ pรฅlitliga mรถnster fรถr att bekrรคfta verktygstipstext: att lรคsa HTML-titelattributet direkt och anvรคnda Actions API fรถr att hรฅlla muspekaren รถver element som renderas dynamiskt. JavaSkript- eller jQuery-verktygstips.

  • ???? Nyckelprincip: Ett verktygstips รคr text som exponeras nรคr man hรฅller muspekaren รถver den, sรฅ verifieringsstrategin beror pรฅ var webblรคsaren lagrar den texten i DOM-filen.
  • ๐Ÿท๏ธ Statiska verktygstips: Fรถr HTML-titlarbaserade verktygstips, anropa getAttribute("title") or getDomAttribute("title") och jรคmfรถr med den fรถrvรคntade strรคngen.
  • ๐Ÿ–ฑ๏ธ Dynamiska verktygstips: Fรถr jQuery-, CSS- eller plugin-verktygstips, anvรคnd Actions-klassen med moveToElement(target).build().perform() innan du lรคser verktygstipselementet.
  • โฑ๏ธ Bรคsta praxis: Vรคnta tills verktygstipsbehรฅllaren blir synlig efter muspekaren och bekrรคfta sedan texten med getText() fรถr att undvika inaktuella eller tomma lรคsningar.
  • ๐Ÿš€ Selenium 4 Tips: Par Selenium Manager med explicita vรคntetider istรคllet fรถr Thread.sleep fรถr stabila, drivrutinsfria verktygstipskontroller.

Verifiera verktygstips i Selenium webbdrivrutin

Verktygstips i Selenium

A Verktygstips i Selenium รคr en kort text som visas nรคr muspekaren hรฅller muspekaren รถver ett objekt pรฅ en webbsida. Objektet kan vara en lรคnk, en bild, en knapp eller ett textomrรฅde. Verktygstipstexten ger ofta mer information om elementet under markรถren.

Verktygstips implementerades traditionellt som ett "title"-attribut pรฅ ett element. Vรคrdet pรฅ detta attribut visades som ett verktygstips nรคr muspekaren hรถlls รถver det. Detta รคr en statisk text som ger information om elementet utan styling.

Idag finns mรฅnga plugins tillgรคngliga fรถr implementering av verktygstips. Avancerade verktygstips med styling, rendering, bilder och lรคnkar byggs med hjรคlp av JavaSkript- eller jQuery-plugins, eller med endast CSS-verktygstips.

  • Fรถr att komma รฅt eller verifiera statiska verktygstips som implementerats via HTML-attributet "title", anvรคnd getAttribute("title") metoden pรฅ WebElement. Det returnerade vรคrdet (verktygstipstexten) jรคmfรถrs med ett fรถrvรคntat vรคrde fรถr verifiering.
  • Fรถr andra implementeringar av verktygstips, anvรคnd "Advanced User Interactions API" som tillhandahรฅlls av WebDriver fรถr att skapa muspekareffekten och hรคmta sedan verktygstipset fรถr elementet.

Kort om Advanced User Interactions API

Advanced User Interactions API exponerar anvรคndarรฅtgรคrder som dra och slรคpp, hovra รถver, markera flera element, trycka och slรคppa tangenter och andra tangentbords- eller musรฅtgรคrder pรฅ en webbsida.

Du kan hรคnvisa till detta officiell referens fรถr Actions-klassen fรถr mer information om API.

Fรถre hoppping I scenarier, lรฅt oss titta pรฅ de klasser och metoder vi behรถver fรถr att flytta ett skjutreglageelement med en fรถrskjutning.

Steg 1) Fรถr att anvรคnda API:et, importera fรถljande paket och klasser:

Advanced User Interactions API

Steg 2) Skapa ett objekt av klassen "Actions" och bygg sekvensen av anvรคndarรฅtgรคrder. Klassen Actions bygger lรคnkade รฅtgรคrder som moveToElement() och dragAndDrop(). Drivrutinsobjektet skickas som en parameter till dess konstruktor.

Advanced User Interactions API

Steg 3) Skapa ett Action-objekt med hjรคlp av build()-metoden i klassen "Actions". Anropa perform()-metoden fรถr att utfรถra varje kรถad รฅtgรคrd i byggaren.

Advanced User Interactions API

Vi har sett hur man anvรคnder nรฅgra av de anvรคndarรฅtgรคrdsmetoder som tillhandahรฅlls av API:et: clickAndHold(element), moveByOffset(10, 0) och release(). API:et exponerar mรฅnga fler.

Verktygstipsimplementering vs. Selenium Verifieringsmetod

Typ av verktygstips Hur det renderas Selenium Tillvรคgagรฅngssรคtt
HTML-titelattribut Text lagrad pรฅ sjรคlva elementet; webblรคsaren visas nรคr man hรฅller muspekaren รถver det. Lรคs med getAttribute("title") or getDomAttribute("title")Ingen muspekare behรถvs.
jQuery / JS-plugin En dedikerad div visas bredvid elementet nรคr du hรฅller muspekaren รถver det. Anvรคnd รฅtgรคrder moveToElement(target).perform(), vรคnta och lรคs sedan verktygstipselementet med getText().
CSS-only tooltip Pseudoelement eller syskon-div vรคxlad med :hover. Utlรถs muspekaren med ร…tgรคrder och lรคs den renderade texten eller den berรคknade stilen.

Hur du verifierar (hanterar) verktygstips i Selenium

Lรฅt oss gรฅ igenom hur man fรฅr รฅtkomst till och verifierar verktygstips med tvรฅ vanliga scenarier:

  • Scenario 1: Verktygstips implementeras med attributet โ€titleโ€.
  • Scenario 2: Verktygstips implementeras med hjรคlp av ett jQuery-plugin.

Scenario 1: HTML-attributet "title"

I det hรคr fallet anvรคnder vi exempelwebbplatsen https://demo.guru99.com/test/social-icon.html och verifiera verktygstipset fรถr "github"-ikonen lรคngst upp till hรถger pรฅ sidan.

HTML "title" Attribut

Vi lokaliserar fรถrst elementet, lรคser sedan dess "title"-attribut och jรคmfรถr det med den fรถrvรคntade verktygstipstexten.

Eftersom verktygstipset finns i attributet "title" automatiserar vi inte ens muspekaren; vi hรคmtar helt enkelt attributvรคrdet med metoden getAttribute().

HTML "title" Attribut

Hรคr รคr 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();
    }
}

Fรถrklaring av kod:

  1. Hitta WebElement som representerar "github"-ikonen.
  2. Lรคs dess "title"-attribut med metoden getAttribute().
  3. Hรคvda vรคrdet mot den fรถrvรคntade verktygstipstexten.

Selenium 4 tips: Fรถredra getDomAttribute("title") fรถr det litterala HTML-attributet, och lรฅt Selenium Manager lรถser drivrutinen istรคllet fรถr att hรฅrdkoda chromedriver.exe.

Scenario 2: jQuery-plugin

Mรฅnga jQuery-plugins implementerar verktygstips, och var och en renderas nรฅgot annorlunda.

Vissa plugin-program behรฅller verktygstipsmarkeringen bredvid trigger-elementet hela tiden, medan andra skapar en "div"-tagg dynamiskt nรคr markรถren placeras pรฅ triggern.

Fรถr den hรคr demonstrationen anvรคnder vi stilen โ€jQuery Tools Tooltipโ€.

ร–ppet https://demo.guru99.com/test/tooltip.html; om du hรฅller muspekaren รถver "Ladda ner nu" visas ett avancerat verktygstips med en bild, en bakgrund med en bildtext, en liten tabell och en klickbar lรคnk.

Verktygstips fรถr jQuery-plugin

Om du granskar kรคllkoden finns div-filen som representerar verktygstipset redan bredvid lรคnken "Ladda ner nu". Skripttaggen nedan styr nรคr den visas.

Kรคlla fรถr verktygstips fรถr jQuery-plugin

Nu verifierar vi lรคnktexten som visas i verktygstipset.

Leta fรถrst reda pรฅ WebElement fรถr "Ladda ner nu". Anvรคnd Interactions API fรถr att flytta till elementet (hรฅll muspekaren รถver det). Leta sedan reda pรฅ WebElement som mappas till lรคnken inuti den visade verktygstipsen och verifiera dess text mot det fรถrvรคntade vรคrdet.

Verifiering av verktygstips fรถr jQuery-plugin

Hรคr รคr 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 Fรถrklaring:

  1. Leta reda pรฅ det WebElement som รคr kopplat till elementet โ€Ladda ner nuโ€ som du hรฅller muspekaren รถver.
  2. Anvรคnd Interactions API fรถr att hรฅlla markรถren รถver "Ladda ner nu".
  3. Nรคr verktygstipset รคr synligt, leta reda pรฅ WebElement som representerar lรคnken inuti verktygstipset ("a"-taggen).
  4. Lรคs verktygstipstexten med getText() och jรคmfรถr det med det fรถrvรคntade vรคrdet som lagrats i expectedTooltip.

Vanliga frรฅgor

Om verktygstipset รคr skapat med HTML-attributet title, anropa getAttribute("title") eller getDomAttribute("title") pรฅ WebElement och jรคmfรถr den returnerade texten med det fรถrvรคntade vรคrdet.

Anvรคnd Actions-klassen fรถr att moveToElement(target).perform(), vรคnta tills tooltip-elementet blir synligt, lรคs sedan dess text eller attribut med getText() och bekrรคfta vรคrdet.

Den returnerar null nรคr elementet inte har nรฅgot titelattribut eller nรคr verktygstipstexten รฅterges dynamiskt via en separat div. Kontrollera DOM:en och rikta in sig pรฅ den faktiska verktygstipsbehรฅllaren.

AI-drivna verktyg genererar automatiskt positionerare, sjรคlvlรคkande selektorer nรคr DOM รคndras och fรถreslรฅr hovringssekvenser, vilket minskar ojรคmna verktygstips och underhรฅllstid mellan webblรคsare.

Ja. Moderna AI-assistenter skannar sidan, upptรคcker element som man kan svepa รถver och genererar fรคrdiga att kรถra. Selenium skript med pรฅstรฅenden, vilket avsevรคrt minskar den manuella skriptinsatsen fรถr verktygstips.

Sammanfatta detta inlรคgg med: