Come fare clic sull'immagine in Selenium Webdriver

โšก Riepilogo intelligente

Fai clic sull'immagine in Selenium WebDriver richiede l'utilizzo di selettori CSS o strategie XPath perchรฉ gli elementi immagine non espongono il testo dei link. Questo articolo spiega come individuare l'immagine, attivare l'azione di clic e verificare che la navigazione abbia successo.

  • ๐Ÿ–ฑ๏ธ Azione principale: Utilizza driver.findElement(By.cssSelector(โ€ฆ)).click() per eseguire un clic su qualsiasi elemento immagine visualizzato all'interno di un link.
  • ๐ŸŽฏ Scelta del localizzatore: By.linkText e By.partialLinkText non funzionano con le immagini, quindi sono necessari By.cssSelector o By.xpath.
  • ๐Ÿงช Fase di verifica: Conferma l'avvenuto clic verificando il nuovo titolo della pagina con driver.getTitle() rispetto alla stringa di destinazione prevista.
  • ๐Ÿค– Assistenza AI: I moderni plugin di intelligenza artificiale suggeriscono selettori CSS stabili e localizzatori che si riparano automaticamente quando il markup dell'applicazione o i valori degli attributi cambiano.
  • ๏ธ Insidie โ€‹โ€‹โ€‹โ€‹comuni: Le immagini nascoste, caricate in modo differito o sovrapposte spesso richiedono attese esplicite, scorrimento per visualizzarle o JavaFare clic sullo script per registrarsi correttamente.

Fare clic su Immagine in Selenium

Facendo clic su un'immagine in Selenium WebDriver รจ un'operazione comune quando un'icona, un logo o una miniatura si comportano come un collegamento di navigazione. Poichรฉ le immagini non contengono testo visibile, i tradizionali localizzatori di testo dei collegamenti risultano inefficaci ed รจ necessaria una strategia di selezione piรน affidabile.

Accesso ai collegamenti immagine

I link immagine sono ancoraggi presenti sulle pagine web, rappresentati da un'immagine che, una volta cliccata, reindirizza il browser a una finestra o pagina diversa.

Poichรฉ si tratta di immagini, non possiamo utilizzare i metodi By.linkText() e By.partialLinkText() perchรฉ i link alle immagini non contengono alcun testo.

In questo caso, dovremmo ricorrere all'utilizzo di By.cssSelector o By.xpath. Il primo metodo รจ generalmente preferibile per la sua semplicitร  e leggibilitร .

Nell'esempio seguente, accederemo al logo "Facebook" nella parte in alto a sinistra della pagina di recupero password di Facebook.

Accesso ai collegamenti immagine

Utilizzeremo By.cssSelector e l'attributo "title" dell'elemento per accedere al link dell'immagine. Successivamente, verificheremo che il browser sia stato reindirizzato alla homepage di Facebook.

Java Code Esempio

Le seguenti Selenium Il frammento di codice WebDriver avvia Chrome, apre la pagina di recupero della password di Facebook, fa clic sull'immagine del logo di Facebook e verifica il titolo della pagina risultante.

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

Risultato

Fare clic su Immagine in Selenium Webdriver

Migliori pratiche per scattare foto

Alcune abitudini rendono l'automazione del clic sulle immagini piรน affidabile su diversi browser e dimensioni dello schermo.

  • รˆ preferibile utilizzare attributi stabili come title, alt, aria-label o data-* piuttosto che percorsi CSS annidati in profonditร .
  • Aggiungi un WebDriverWait esplicito per ElementToBeClickable prima di emettere il clic.
  • Per le immagini caricate in modo differito, scorri l'elemento per visualizzarlo con JavascriptPrima l'esecutore.
  • Se una sovrapposizione trasparente intercetta il clic, torna a un JavaLo script fa clic sull'elemento sottostante.
  • Convalida la navigazione con driver.getTitle() o con un elemento univoco sulla pagina di destinazione.

Come l'IA migliora le strategie di localizzazione delle immagini

Strumenti di test assistiti dall'IA come TestimMabl e Healenium analizzano il DOM intorno a un'immagine e propongono localizzatori auto-riparanti. Quando il nome di una classe o un attributo cambia dopo una release, il framework sostituisce automaticamente l'alternativa con quella piรน stabile, riducendo cosรฌ i malfunzionamenti nella navigazione basata su icone.

Gli ingegneri possono anche utilizzare ChatGPT o GitHub Copilot per generare snippet di WebDriver, suggerire espressioni CSS o XPath efficaci per un'immagine e redigere asserzioni per la pagina che si carica dopo il clic. Il codice generato deve comunque essere rivisto per verificarne la correttezza e la gestione di attese e sovrapposizioni.

Conclusione

Facendo clic sui collegamenti delle immagini in Selenium WebDriver รจ semplice una volta scelto un localizzatore stabile. By.cssSelector con l'attributo title o alt รจ l'approccio piรน leggibile, By.xpath รจ il ripiego quando il markup รจ complesso e le attese esplicite rendono lo script affidabile tra le diverse esecuzioni.

DOMANDE FREQUENTI

Individua l'immagine con By.cssSelector o By.xpath utilizzando un attributo stabile come title, alt o aria-label, quindi chiama .click() sull'elemento WebElement restituito. Verifica il risultato con driver.getTitle() o un elemento univoco sulla pagina di destinazione.

Sรฌ. Strumenti come TestimMabl e ChatGPT analizzano il DOM circostante e suggeriscono un selettore stabile basato su title, alt, aria-label o attributi data. Gli ingegneri dovrebbero comunque verificare l'unicitร  e la robustezza del localizzatore generato.

Un localizzatore auto-riparante รจ una funzionalitร  di intelligenza artificiale che sostituisce il selettore originale con uno alternativo quando quest'ultimo fallisce. Framework come Healenium e Mabl monitorano le modifiche degli attributi intorno a un'immagine e scelgono il sostituto piรน stabile, riducendo cosรฌ i test instabili dopo gli aggiornamenti dell'interfaccia utente.

Entrambi i localizzatori corrispondono al testo visibile all'interno di un tag anchor. Un link immagine racchiude un tag img e non espone alcun nodo di testo, quindi la corrispondenza non restituisce mai nulla. Utilizzare invece By.cssSelector o By.xpath con title, alt o aria-label.

Se una sovrapposizione, una finestra modale o un tooltip bloccano l'immagine, scorri per visualizzarla con JavascriptEsecutore e aggiungi un WebDriverWait per ElementToBeClickable. Come soluzione di ripiego, esegui un JavaLo script fa clic sull'elemento Web per aggirare la sovrapposizioneping strato.

Assumi il nuovo titolo della pagina con driver.getTitle(), il titolo corrente URL con driver.getCurrentUrl() o la presenza di un elemento univoco sulla pagina di destinazione. Una combinazione di questi controlli dร  al test la certezza che il clic abbia effettivamente attivato la navigazione.

Riassumi questo post con: