Slik bekrefter du verktøytips i Selenium
Verktøytips i Selenium
A Verktøytips i Selenium er en tekst som vises når en mus svever over et objekt på en nettside. Objektet kan være en lenke, et bilde, en knapp, et tekstområde osv. Verktøytipsteksten gir ofte mer informasjon om objektet som brukeren svever over musepekeren på.
Verktøytips ble tradisjonelt implementert som en "tittel"-attributt til et element. Verdien av dette attributtet ble vist som et verktøytips ved musepeker. Dette er en statisk tekst som gir informasjon om elementet uten styling.
Nå er det mange plugins tilgjengelig for implementering av "verktøytips". Avanserte verktøytips med styling, gjengivelse, bilder og lenker implementeres ved hjelp av JavaSkript/JQuery-plugins eller bruk av CSS-verktøytips.
- For å få tilgang til eller verifisere de statiske verktøytipsene som er implementert ved hjelp av HTML-attributtet «title», kan vi ganske enkelt bruke getAttribute(«title»)-metoden til WebElement. Den returnerte verdien av denne metoden (som er verktøytipsteksten) sammenlignes med en forventet verdi for verifisering.
- For andre former for verktøytipsimplementeringer må vi bruke "Advanced User Interactions API" levert av webdriveren for å lage musepekeeffekten og deretter hente verktøytipset for elementet.
Kort om Advanced User Interactions API
Advanced User Interactions API gir API for brukerhandlinger som dra og slipp, sveve, multivalg, tastetrykk og slipp og andre handlinger ved å bruke tastatur eller mus på en nettside.
Du kan henvise til dette link for mer informasjon om API.
Her, la oss se hvordan du bruker et par klasser og metoder vi trenger for å flytte et skyveelement med en forskyvning.
Trinn 1) For å bruke API, må følgende pakker/klasser importeres:
Trinn 2) Lag et objekt av klassen "Actions" og bygg sekvensen av brukerhandlinger. Actions-klassen brukes til å bygge sekvensen av brukerhandlinger som moveToElement(), dragAndDrop() osv. Ulike metoder relatert til brukerhandlinger leveres av API.
Driverobjektet leveres som en parameter til konstruktøren.
Trinn 3) Opprett et handlingsobjekt ved å bruke build()-metoden til klassen "Actions". Kall perform()-metoden for å utføre alle handlingene bygget av Actions-objektet (bygger her).
Vi har sett hvordan du bruker noen av brukerhandlingsmetodene som tilbys av APIen – clickAndHold(element), moveByOffset(10,0), release(). API gir mange slike metoder.
Referere til link for mer informasjon.
Hvordan verifisere (håndtere) verktøytips i Selenium
La oss se demonstrasjonen av tilgang til og verifisering av verktøytipsene i det enkle scenariet
- Scenario 1: Verktøytips implementeres ved å bruke "title"-attributtet
- Scenario 2: Verktøytips implementeres ved hjelp av en jQuery-plugin.
Scenario 1: HTML 'tittel'-attributt
For dette tilfellet, la oss ta eksempelsiden – https://demo.guru99.com/test/social-icon.html.
Vi vil prøve å bekrefte verktøytipset til "github"-ikonet øverst til høyre på siden.
For å gjøre det, vil vi først finne elementet og få dets 'title'-attributt og verifisere med den forventede verktøytipsteksten.
Siden vi antar at verktøytipset er i "title"-attributtet, automatiserer vi ikke engang musepekeeffekten, men bare henter attributtverdien ved å bruke "getAttribute()"-metoden.
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]")); //get the value of the "title" attribute of the github icon String actualTooltip = github.getAttribute("title"); //Assert the tooltip's value is as expected System.out.println("Actual Title of Tool Tip"+actualTooltip); if(actualTooltip.equals(expectedTooltip)) { System.out.println("Test Case Passed"); } driver.close(); } }
Forklaring av kode
- Finn WebElement som representerer "github"-ikonet.
- Få "title"-attributtet ved å bruke getAttribute()-metoden.
- Angi verdien mot den forventede verktøytipsverdien.
Scenario 2: JQuery-plugin
Det er mange JQuery-plugins tilgjengelig for å implementere verktøytipsene, og hver enkelt har en litt annen form for implementering.
Noen plugins forventer at HTML-verktøytipset hele tiden er tilstede ved siden av elementet som verktøytipset er aktuelt for, mens de andre lager en dynamisk "div"-tag, som vises på farten mens du svever over elementet.
For vår demonstrasjon, la oss vurdere «jQuery Tools Tooltip»-metoden for verktøytipsimplementering.
Her i URL-en – https://demo.guru99.com/test/tooltip.html du kan se demoen hvor vi holder musepekeren over «Last ned nå», får et avansert verktøytips med et bilde, bildetekstbakgrunn, en tabell og en lenke inni den som er klikkbar.
Hvis du ser på kilden nedenfor, kan du se at div-taggen som representerer verktøytipset alltid er til stede ved siden av "Last ned nå"-lenkens tag. Men koden inne i skriptkoden nedenfor kontrollerer når den må vises.
La oss prøve å bekrefte bare lenketeksten i verktøytipset for vår demonstrasjon her.
Vi vil først finne WebElementet som tilsvarer "Last ned nå". Deretter ved å bruke Interactions API, vil vi flytte til elementet (muse-hover). Deretter vil vi finne WebElementet som tilsvarer lenken inne i det viste verktøytipset og verifisere det mot forventet tekst.
Her er koden
import org.openqa.selenium.interactions.Action; 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); builder.clickAndHold().moveToElement(download); 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(); } }
Kode Forklaring
- Finn WebElementet som tilsvarer elementet "last ned nå" som vi vil holde musen over.
- Ved å bruke Interactions API, hold musepekeren til «Last ned nå».
- Forutsatt at verktøytipset vises, finn WebElementet som tilsvarer lenken inne i verktøytipset, dvs. "a"-taggen.
- Bekreft koblingens verktøytipstekst hentet ved hjelp av getText() mot en forventet verdi vi har lagret i "expectedToolTip"
Sammendrag
I denne opplæringen har du lært hvordan du får tilgang til verktøytips ved å bruke Selenium Web driver.
Verktøytips implementeres på forskjellige måter–
- Den grunnleggende implementeringen er basert på HTMLs "tittel"-attributt. getAttribute(tittel) får verdien av verktøytipset.
- Andre implementeringer av verktøytips som JQuery, CSS-verktøytips krever Interactions API for å skape musepekeeffekt
Advanced User Interactions API–
- moveToElement(element) av Actions-klassen brukes til å holde musepekeren på et element.
- Build()-metoden til Actions-klassen bygger sekvensen av brukerhandlinger inn i et Action-objekt.
- Perform() av Action-klassen utfører alle sekvensen av brukerhandlinger samtidig.
For å verifisere et verktøytips, må vi først holde musepekeren på elementet, deretter finne elementet som tilsvarer verktøytipset og få teksten eller andre verdier for å verifisere mot de forventede verdiene.