Työkaluvihjeen vahvistaminen Selenium

⚡ Älykäs yhteenveto

Tarkista työkaluvihje kohdassa Selenium WebDriver käsittelee kahta luotettavaa työkaluvihjeen tekstin lisäämisen mallia: HTML-otsikkoattribuutin lukemisen suoraan ja Actions API:n käytön hiiren viemiseksi dynaamisesti renderöityjen elementtien päälle. JavaSkripti- tai jQuery-työkaluvihjeet.

  • 💡 Pääperiaate: Työkaluvihje on teksti, joka näytetään hiiren osoittimen viemisen jälkeen, joten vahvistusstrategia riippuu siitä, mihin selain tallentaa tekstin DOM-ympäristössä.
  • 🏷️ Staattiset työkaluvihjeet: HTML-otsikkoon perustuvien työkaluvihjeiden saamiseksi kutsu getAttribute("title") or getDomAttribute("title") ja vertaa odotettuun merkkijonoon.
  • 🖱️ Dynaamiset työkaluvihjeet: jQuery-, CSS- tai plugin-työkaluvihjeiden osalta käytä Actions-luokkaa moveToElement(target).build().perform() ennen työkaluvihjeen lukemista.
  • ⏱️ Paras harjoitus: Odota, että työkaluvihjeen säilö tulee näkyviin hiiren osoittimen viemisen jälkeen, ja lisää sitten teksti getText() vanhentuneiden tai tyhjien lukujen välttämiseksi.
  • 🚀 Selenium Vuoden 4 vinkki: Pari Selenium Manager, joka käyttää eksplisiittisiä odotusaikoja Thread.sleep-funktion sijaan vakaita, ajuripolkuja vailla olevia työkaluvihjeiden tarkistuksia varten.

Tarkista työkaluvihje kohdassa Selenium web-ajuri

Työkaluvinkki sisään Selenium

A Työkaluvinkki sisään Selenium on lyhyt teksti, joka tulee näkyviin, kun hiiri viedään verkkosivulla olevan objektin päälle. Objekti voi olla linkki, kuva, painike tai tekstialue. Työkaluvihjeen teksti antaa usein lisätietoja kohdistimen alla olevasta elementistä.

Työkaluvihjeet toteutettiin perinteisesti elementin "otsikko"-attribuuttina. Tämän attribuutin arvo näytettiin työkaluvihjeenä hiiren osoittimen vietäessä sen päälle. Tämä on staattinen teksti, joka antaa tietoa elementistä ilman tyylittelyä.

Nykyään työkaluvihjeiden toteuttamiseen on saatavilla useita lisäosia. Edistyneet työkaluvihjeet, joissa on tyylejä, renderöintiä, kuvia ja linkkejä, rakennetaan käyttämällä JavaSkripti- tai jQuery-laajennukset tai vain CSS:lle tarkoitetut työkaluvihjeet.

  • HTML-koodin ”title”-attribuutin kautta toteutettujen staattisten työkaluvihjeiden käyttämiseen tai tarkistamiseen käytä getAttribute("title") menetelmä WebElementissä. Palautettua arvoa (työkaluvihjeen tekstiä) verrataan odotettuun arvoon vahvistusta varten.
  • Muiden työkaluvihjeiden toteutuksissa käytä WebDriverin tarjoamaa ”Advanced User Interactions API” -rajapintaa hiiren osoittimen päälle viemisen tehosteen luomiseen ja sitten elementin työkaluvihjeen hakemiseen.

Lyhyt kuvaus Advanced User Interactions API:sta

Advanced User Interactions API mahdollistaa käyttäjän toiminnot, kuten vetämisen ja pudottamisen, hiiren osoittimen käyttämisen, monivalinnan, näppäinpainalluksen ja -vapautuksen sekä muut näppäimistö- tai hiiritoiminnot verkkosivulla.

Voit viitata tähän virallinen Actions-luokan viite saadaksesi lisätietoja API:sta.

Ennen hyppyäping Skenaarioissa tarkastellaan luokkia ja metodeja, joita tarvitsemme liukusäädinelementin siirtämiseen offsetin verran.

Vaihe 1) Käyttääksesi API:a, tuo seuraavat paketit ja luokat:

Advanced User Interactions API

Vaihe 2) Luo ”Actions”-luokan objekti ja rakenna käyttäjän toimintojen sarja. Actions-luokka rakentaa ketjutettuja toimintoja, kuten moveToElement() ja dragAndDrop(). Ajuriobjekti annetaan parametrina sen rakentajalle.

Advanced User Interactions API

Vaihe 3) Luo Action-objekti käyttämällä Actions-luokan build()-metodia. Kutsu perform()-metodia suorittaaksesi kaikki rakentajan jonossa olevat toiminnot.

Advanced User Interactions API

Olemme nähneet, miten käytetään joitakin API:n tarjoamia käyttäjän Action-metodeja: clickAndHold(element), moveByOffset(10, 0) ja release(). API tarjoaa monia muitakin.

Työkaluvihjeiden käyttöönotto vs. Selenium Todentamismenetelmä

Työkaluvihjeen tyyppi Miten se renderöityy Selenium Lähestymistapa
HTML-otsikkoattribuutti Teksti on tallennettu itse elementtiin; selain näyttää sen, kun hiiren osoitin viedään sen päälle. Lue kanssa getAttribute("title") or getDomAttribute("title")Leijumista ei tarvita.
jQuery / JS-laajennus Omistettu div-elementti näkyy elementin vieressä, kun hiiren osoitin viedään sen päälle. Käytä toimintoja moveToElement(target).perform(), odota ja lue sitten työkaluvihje-elementti getText().
Vain CSS:lle tarkoitettu työkaluvihje Pseudoelementti tai sisarusdiv vaihdettavissa :hover. Vie hiiri toimintojen päälle ja lue renderöity teksti tai laskettu tyyli.

Työkaluvinkin vahvistaminen (käsitteleminen) Selenium

Käydään läpi työkaluvihjeiden käyttö ja tarkistaminen kahden yleisen skenaarion avulla:

  • Skenaario 1: Työkaluvihje toteutetaan käyttämällä ”title”-attribuuttia.
  • Skenaario 2: Työkaluvihje on toteutettu jQuery-laajennuksella.

Skenaario 1: HTML-attribuutti ”title”

Tässä tapauksessa käytämme esimerkkisivustoa https://demo.guru99.com/test/social-icon.html ja tarkista sivun oikeassa yläkulmassa olevan "github"-kuvakkeen työkaluvihje.

HTML 'title' -attribuutti

Ensin paikannamme elementin, luemme sen ”title”-attribuutin ja vertaamme sitä odotettuun työkaluvihjeen tekstiin.

Koska työkaluvihje on ”title”-attribuutissa, emme edes automatisoi hiiren osoittimen viemistä sen päälle; haemme attribuutin arvon getAttribute()-metodilla.

HTML 'title' -attribuutti

Tässä on koodi:

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

Koodin selitys:

  1. Etsi WebElement, joka edustaa "github"-kuvaketta.
  2. Lue sen ”title”-attribuutti getAttribute()-metodilla.
  3. Vahvista arvo odotettua työkaluvihjeen tekstiä vasten.

Selenium 4 vinkki: Mieluummin getDomAttribute("title") literaali-HTML-attribuutille ja anna Selenium Esimies ratkaisee ajurin kovakoodauksen sijaan chromedriver.exe.

Skenaario 2: jQuery-laajennus

Monet jQuery-laajennukset toteuttavat työkaluvihjeitä, ja jokainen niistä renderöityy hieman eri tavalla.

Jotkin laajennukset pitävät työkaluvihjeen merkinnän aina trigger-elementin vieressä, kun taas toiset luovat "div"-tunnisteen dynaamisesti, kun kursori siirtyy triggeriin.

Tässä demonstraatiossa käytämme ”jQuery Tools Tooltip” -tyyliä.

avoin https://demo.guru99.com/test/tooltip.html; hiiren vieminen "Lataa nyt" -kohdan päälle paljastaa edistyneen työkaluvihjeen, jossa on kuva, taustateksti, pieni taulukko ja napsautettava linkki.

jQuery-laajennuksen työkaluvihje

Jos tarkastelet lähdekoodia, työkaluvihjettä edustava div-elementti on jo "Lataa nyt" -linkin vieressä. Alla oleva komentosarjatunniste määrittää, milloin se näkyy.

jQuery-laajennuksen työkaluvihjeen lähdekoodi

Nyt tarkistamme työkaluvihjeessä näkyvän linkkitekstin.

Etsi ensin ”Lataa nyt” -kohdan WebElement-elementti. Siirry elementtiin Interactions API:n avulla (hiirellä). Etsi seuraavaksi näytetyn työkaluvihjeen linkkiin liittyvä WebElement-elementti ja tarkista sen teksti odotettua arvoa vasten.

jQuery-laajennuksen työkaluvihjeiden vahvistus

Tässä on koodi:

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 Selitys:

  1. Etsi WebElement, joka vastaa hiiren osoittimen osoittamaa ”Lataa nyt” -elementtiä.
  2. Vie kohdistin Interactions API:n avulla kohtaan ”Lataa nyt”.
  3. Kun työkaluvihje on näkyvissä, etsi työkaluvihjeen sisältä linkkiä edustava WebElement-elementti ("a"-tagi).
  4. Lue työkaluvihjeen teksti toiminnolla getText() ja vertaa sitä tallennettuun odotusarvoon expectedTooltip.

UKK

Jos työkaluvihje on rakennettu HTML-title-attribuutin avulla, kutsu getAttribute(“title”)- tai getDomAttribute(“title”)-metodia WebElementissä ja vertaa palautettua tekstiä odotettuun arvoon.

Käytä Actions-luokkaa funktion moveToElement(target).perform() suorittamiseen, odota, kunnes työkaluvihje tulee näkyviin, lue sitten sen teksti tai attribuutti getText()-funktiolla ja aseta arvo.

Se palauttaa null-arvon, kun elementillä ei ole title-attribuuttia tai työkaluvihjeen teksti renderöidään dynaamisesti erillisen div-elementin kautta. Tarkasta DOM ja kohdista varsinaiseen työkaluvihjeen säilöön.

Tekoälyllä toimivat työkalut luovat paikantimia automaattisesti, korjaavat itseään valitsimilla DOM:n muuttuessa ja ehdottavat osoittimen päälle viemisjärjestyksiä, mikä vähentää epätasaisia ​​työkaluvihjeiden testejä ja ylläpitoaikaa eri selaimissa.

Kyllä. Nykyaikaiset tekoälyavustajat skannaavat sivun, havaitsevat leijuvat elementit ja luovat käyttövalmiita kuvia. Selenium skriptejä väitteiden kanssa, mikä vähentää merkittävästi manuaalisen skriptauksen työmäärää työkaluvihjeiden kattavuuden osalta.

Tiivistä tämä viesti seuraavasti: