Cum să dați clic pe imagine în Selenium Webdriver

⚡ Rezumat inteligent

Faceți clic pe imagine în Selenium WebDriver necesită selectori CSS sau strategii XPath deoarece elementele de imagine nu expun textul linkului. Acest articol explică cum să localizați imaginea, să declanșați acțiunea de clic și să verificați dacă navigarea are succes.

  • 🖱️ Acțiune principală: Folosește driver.findElement(By.cssSelector(…)).click() pentru a efectua un clic pe orice element de imagine randat în interiorul unei ancore.
  • 🎯 Alegerea locatorului: By.linkText și By.partialLinkText nu funcționează pentru imagini, așa că sunt necesare By.cssSelector sau By.xpath.
  • 🧪 Pasul de verificare: Confirmați un clic reușit prin activarea noului titlu al paginii cu driver.getTitle() pentru șirul de destinație așteptat.
  • 🤖 Asistență AI: Pluginurile moderne de inteligență artificială sugerează selectori CSS stabili și localizatori cu auto-reparare atunci când markup-ul aplicației sau valorile atributelor se modifică.
  • 🛠️ Capcane comune: Imaginile ascunse, încărcate în mod lenj sau suprapuse necesită adesea așteptări explicite, derulare în vizualizare sau JavaFaceți clic pe script pentru a vă înregistra corect.

Faceți clic pe Imagine în Selenium

Dacă faceți clic pe o imagine în Selenium WebDriver este o sarcină obișnuită atunci când o pictogramă, un logo sau o miniatură se comportă ca un link de navigare. Deoarece imaginile nu conțin text vizibil, localizatoarele tradiționale de link-text eșuează și este necesară o strategie de selecție mai fiabilă.

Accesarea link-urilor de imagine

Linkurile de imagine sunt ancore pe paginile web reprezentate de o imagine care, atunci când este accesată, navighează browserul către o altă fereastră sau pagină.

Deoarece sunt imagini, nu putem folosi metodele By.linkText() și By.partialLinkText() deoarece linkurile de imagine nu au deloc text de link.

În acest caz, ar trebui să recurgem fie la By.cssSelector, fie la By.xpath. Prima metodă este în general preferată datorită simplității și lizibilității sale.

În exemplul de mai jos, vom accesa sigla „Facebook” în partea din stânga sus a paginii Facebook de recuperare a parolei.

Accesarea link-urilor de imagine

Vom folosi By.cssSelector și atributul „title” al elementului pentru a accesa linkul imaginii. Apoi vom verifica dacă browserul a fost direcționat către pagina principală a Facebook.

Java Code Exemplu

Următoarele Selenium Fragmentul WebDriver lansează Chrome, deschide pagina de recuperare a parolei Facebook, dă clic pe imaginea logo-ului Facebook și afișează titlul paginii rezultate.

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

Rezultat

Faceți clic pe Imagine în Selenium Webdriver

Cele mai bune practici pentru clicurile pe imagini

Câteva obiceiuri fac ca automatizarea clicurilor pe imagini să fie mai fiabilă în diferite browsere și dimensiuni de ecran.

  • Preferați un atribut stabil, cum ar fi title, alt, aria-label sau data-*, în locul unor căi CSS imbricate profund.
  • Adăugați un WebDriverWait explicit pentru ElementToBeClickable înainte de a efectua clicul.
  • Pentru imaginile încărcate în mod lenj, derulați elementul în vizualizare cu JavascriptExecutorul mai întâi.
  • Dacă o suprapunere transparentă interceptează clicul, reveniți la o JavaClic pe script pe elementul subiacent.
  • Validați navigarea cu driver.getTitle() sau cu un element unic pe pagina de destinație.

Cum îmbunătățește inteligența artificială strategiile de localizare a imaginilor

Instrumente de testare asistate de inteligență artificială, cum ar fi TestimMabl și Healenium analizează DOM-ul din jurul unei imagini și propun localizatori cu auto-reparare. Când numele unei clase sau un atribut se modifică după o lansare, framework-ul schimbă automat alternativa cea mai stabilă, ceea ce reduce erorile instabile în navigarea bazată pe pictograme.

Inginerii pot folosi, de asemenea, ChatGPT sau GitHub Copilot pentru a genera fragmente WebDriver, a sugera expresii CSS sau XPath robuste pentru o imagine și a redacta afirmații pentru pagina care se încarcă după clic. Codul generat ar trebui totuși verificat pentru corectitudine și pentru gestionarea așteptărilor și a suprapunerilor.

Concluzie

Dând clic pe linkurile de imagine în Selenium WebDriver este simplu de utilizat odată ce alegeți un localizator stabil. By.cssSelector cu atributul title sau alt este cea mai lizibilă abordare, By.xpath este soluția de rezervă atunci când markup-ul este dificil, iar așteptările explicite fac scriptul fiabil pe parcursul rulărilor.

Întrebări frecvente

Localizați imaginea cu By.cssSelector sau By.xpath folosind un atribut stabil, cum ar fi title, alt sau aria-label, apoi apelați .click() pe WebElement-ul returnat. Verificați rezultatul cu driver.getTitle() sau cu un element unic pe pagina de destinație.

Da. Instrumente precum TestimMabl și ChatGPT inspectează DOM-ul înconjurător și sugerează un selector stabil bazat pe atributele title, alt, aria-label sau data. Inginerii ar trebui să verifice în continuare locatorul generat pentru unicitate și reziliență.

Un localizator cu auto-reparare este o funcție a inteligenței artificiale care schimbă un selector alternativ atunci când originalul eșuează. Framework-uri precum Healenium și Mabl observă modificările atributelor din jurul unei imagini și aleg cel mai stabil înlocuitor, ceea ce reduce testele instabile după reîmprospătarea interfeței utilizator.

Ambii localizatori se potrivesc cu textul vizibil din interiorul unei ancore. Un link de imagine încadrează o etichetă img și nu expune niciun nod de text, deci potrivirea nu returnează întotdeauna nimic. Folosește By.cssSelector sau By.xpath cu title, alt sau aria-label în schimb.

Dacă o suprapunere, un buton modal sau o ghișeu blochează imaginea, derulați-o în vizualizare cu JavascriptExecutor și adăugați un WebDriverWait pentru ElementToBeClickable. Ca soluție de rezervă, executați un JavaFaceți clic pe WebElement în script pentru a ocoli suprapunereaping strat.

Afirmați noul titlu al paginii cu driver.getTitle(), titlul curent URL cu driver.getCurrentUrl() sau prezența unui element unic pe pagina de destinație. O combinație a acestor verificări oferă testului încrederea că clicul a declanșat într-adevăr navigarea.

Rezumați această postare cu: