Kuidas klõpsata pildil Selenium Veebidraiver

⚡ Nutikas kokkuvõte

Klõpsake pildil Selenium WebDriver nõuab CSS-i selektori või XPath-strateegiaid, kuna pildielemendid ei kuva lingi teksti. See artikkel selgitab, kuidas pilti leida, klõpsamistoimingut käivitada ja navigeerimise õnnestumist kontrollida.

  • 🖱️ Põhitegevus: Ankru sees renderdatud pildielemendil klõpsamiseks kasutage funktsiooni driver.findElement(By.cssSelector(…)).click().
  • 🎯 Asukoha valik: Piltide puhul By.linkText ja By.partialLinkText ei tööta, seega on vaja By.cssSelector või By.xpath.
  • 🧪 Kinnitamise samm: Kinnitage edukas klõps, lisades uue lehe pealkirja funktsiooniga driver.getTitle() eeldatava sihtstringi vastu.
  • 🤖 AI abi: Kaasaegsed tehisintellekti pluginad pakuvad stabiilseid CSS-selektoreid ja automaatselt parandavaid lokaatoreid, kui rakenduse märgistus või atribuudi väärtused muutuvad.
  • 🛠️ Levinud lõksud: Peidetud, laisalt laaditud või kattuvad pildid vajavad sageli selgesõnalisi ooteaegu, kerimist vaatesse või JavaSkripti klõps registreerimiseks.

Klõpsake Pilt sisse Selenium

Pildi klõpsamine Selenium WebDriver on tavaline ülesanne, kui ikoon, logo või pisipilt käitub navigeerimislingina. Kuna piltidel pole nähtavat teksti, siis traditsioonilised lingi-teksti lokaatorid ebaõnnestuvad ja on vaja usaldusväärsemat valikustrateegiat.

Juurdepääs pildilinkidele

Pildilingid on veebilehtedel olevad ankrud, mida esindab pilt, millele klõpsamisel suunatakse brauser teisele aknale või lehele.

Kuna tegemist on piltidega, ei saa me kasutada meetodeid By.linkText() ja By.partialLinkText(), sest pildilinkidel puudub üldse lingitekst.

Sellisel juhul peaksime kasutama kas By.cssSelectorit või By.xpath'i. Esimest meetodit eelistatakse üldiselt selle lihtsuse ja loetavuse tõttu.

Allolevas näites pääseme juurde Facebooki parooli taastamise lehe vasakpoolses ülanurgas olevale Facebooki logole.

Juurdepääs pildilinkidele

Pildi lingile ligipääsemiseks kasutame By.cssSelectorit ja elemendi atribuuti „title“. Seejärel kontrollime, kas brauser on suunatud Facebooki avalehele.

Java Code Näide

Järgmised Selenium WebDriveri koodijupp käivitab Chrome'i, avab Facebooki parooli taastamise lehe, klõpsab Facebooki logo pildil ja kinnitab saadud lehe pealkirja.

package newproject;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class MyClass {

    public static void main(String[] args) {
        String baseUrl = "https://www.facebook.com/login/identify?ctx=recover";
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        driver.get(baseUrl);
        // click on the "Facebook" logo on the upper left portion
        driver.findElement(By.cssSelector("a[title=\"Go to Facebook home\"]")).click();

        // verify that we are now back on Facebook's homepage
        if (driver.getTitle().equals("Facebook - log in or sign up")) {
            System.out.println("We are back at Facebook's homepage");
        } else {
            System.out.println("We are NOT in Facebook's homepage");
        }
        driver.close();
    }
}

Tulemus

Klõpsake Pilt sisse Selenium Veebidraiver

Piltide klõpsamise parimad tavad

Mõned harjumused muudavad piltide klõpsamise automatiseerimise usaldusväärsemaks erinevates brauserites ja ekraanisuurustes.

  • Eelista sügavalt pesastatud CSS-teede asemel stabiilset atribuuti, näiteks title, alt, aria-label või data-*.
  • Enne klõpsamise sooritamist lisage ElementToBeClickable jaoks selgesõnaline WebDriverWait.
  • Laisalt laaditud piltide puhul kerige element nähtavale klahviga JavascriptTestamenditäitja kõigepealt.
  • Kui läbipaistev kiht klõpsu katkestab, naasege JavaSkripti klõps aluselemendil.
  • Kinnitage navigeerimine funktsiooniga driver.getTitle() või sihtkoha lehel oleva unikaalse elemendi abil.

Kuidas tehisintellekt täiustab piltide asukoha määramise strateegiaid

Tehisintellekti abil töötavad testimisvahendid, näiteks Testim, Mabl ja Healenium analüüsivad pildi ümber olevat DOM-i ja pakuvad välja isetervendavaid lokaatoreid. Kui klassi nimi või atribuut pärast väljalaset muutub, vahetab raamistik automaatselt kõige stabiilsema alternatiivi vastu, mis vähendab ikoonipõhise navigeerimise ebastabiilseid tõrkeid.

Insenerid saavad ChatGPT-d või GitHub Copiloti kasutada ka WebDriveri koodijuppide genereerimiseks, pildi jaoks usaldusväärsete CSS- või XPath-avaldiste soovitamiseks ja pärast klõpsamist laadiva lehe väidete mustandite loomiseks. Genereeritud koodi õigsust ning ooteaegade ja ülekattekihtide käsitlemist tuleks siiski kontrollida.

Järeldus

Piltide linkidele klõpsamine Selenium WebDriver on lihtne, kui valid stabiilse lokaatori. By.cssSelector koos atribuudiga title või alt on kõige loetavam lähenemisviis, By.xpath on varuvariant ebamugava märgistuse korral ja selged ooteajad muudavad skripti töökindlaks erinevate käivitamiste vahel.

KKK

Leidke pilt By.cssSelectori või By.xpath abil, kasutades stabiilset atribuuti, näiteks title, alt või aria-label, seejärel kutsuge tagastatud WebElementi puhul .click(). Kontrollige tulemust driver.getTitle() või sihtkoha lehel oleva unikaalse elemendi abil.

Jah. Tööriistad, näiteks Testim, Mabl ja ChatGPT kontrollivad ümbritsevat DOM-i ja pakuvad stabiilset valijat pealkirja, alt-atribuudi, aria-label-i või andmeatribuutide põhjal. Insenerid peaksid siiski genereeritud lokaatori unikaalsuse ja vastupidavuse üle vaatama.

Isetervenev lokaator on tehisintellekti funktsioon, mis vahetab originaalselektori vastu, kui algne valija ebaõnnestub. Raamistikud nagu Healenium ja Mabl jälgivad pildi atribuutide muutusi ja valivad kõige stabiilsema asenduse, mis vähendab ebastabiilseid teste pärast kasutajaliidese värskendamist.

Mõlemad lokaatorid vastavad ankru sees olevale nähtavale tekstile. Pildilink ümbritseb img-märgendit ja ei kuva tekstisõlme, seega vaste ei tagasta kunagi midagi. Kasutage selle asemel By.cssSelectorit või By.xpath'i koos pealkirja, alt-i või aria-label'iga.

Kui pilti blokeerib pealiskiht, modaalaken või kohtspikri, kerige see kuvale nupuga JavascriptKäivita ja lisa WebDriverWait funktsioonile ElementToBeClickable. Varuvariandina käivita JavaKattumise vältimiseks klõpsake skriptil veebielementiping kiht.

Kinnitage uus lehe pealkiri funktsiooniga driver.getTitle(), praegune URL driver.getCurrentUrl() abil või sihtlehel unikaalse elemendi olemasolu abil. Nende kontrollide kombinatsioon annab testile kindluse, et klõps tõepoolest navigatsiooni käivitas.

Võta see postitus kokku järgmiselt: