Aspetti espliciti in selenio

Aspetti espliciti in selenio
Selenio offre attese per risolvere i problemi di sincronizzazione. In questo articolo, discuteremo del metodo di attesa esplicito. Il metodo esplicito contiene l'esecuzione del passaggio successivo fino a quando non trova l'elemento in un determinato tempo specifico. In questo contenuto, avremo una panoramica delle attese di Selenio e comprenderemo i vantaggi dell'esplicita attesa. Questo articolo implementa un esempio di base di attese esplicite e utilizza blocchi di prova per catturare l'eccezione.

Quali sono le attese nel framework di selenio?

Selenio Aspetta aiuta a risolvere i problemi di sincronizzazione. La sincronizzazione è il processo di corrispondenza della "velocità dello strumento di automazione del test" con la velocità del "sito Web in test". In questo processo, il WebDriver esegue una determinata attività sulla pagina Web ma il WebElement non viene caricato in "Sito Web in test". In questa situazione, il webdriver lancia eccezioni "NosuchelementExpection" o "elementNotVisible Expection". Esistono tre tipi di metodo di attesa forniti dal framework di selenio.

Attesa implicita

Questo tipo di attesa si applica a tutti gli elementi del sito Web ecco perché si chiama Attesa globale. Il metodo implicitamenteWait () viene utilizzato per chiamarlo.

Aspetta esplicita

È un tipo di attesa specifico per weblelement. Aspetta un certo tempo per caricare l'elemento specifico prima di lanciare un'eccezione.

Aspetta fluente

Dà il massimo tempo per trovare il webelement.

Cos'è un'attesa esplicita nel selenio?

Il tipo di attesa esplicito è diverso dall'attesa implicita. Questo metodo di attesa vale per un determinato tempo fino a quando non si verifica una condizione specifica prima di procedere alla riga di codice successiva. È utile dove alcuni elementi si caricano più velocemente e alcuni elementi si caricano più lentamente. Ad esempio: ci sono due o tre elementi che impiegano da 20 a 30 secondi per caricare sulla pagina web. Qui, non puoi andare e cambiare l'attesa in base al tempo massimo che viene preso da uno dei weblelement. Ecco dove l'attesa esplicita gioca la sua parte. Aspetta esplicita Specifica l'attesa per quel particolare elemento sulla pagina web. Puoi specificare per attendere un elemento particolare per lungo tempo; È lì che usiamo l'attesa esplicita. Il metodo WebDriverWait viene utilizzato per chiamare l'attesa explicita.

Interfaccia Selenium WebBrowser

L'interfaccia WebDriver abilita l'implementazione del test di automazione. Il webdriver viene utilizzato per controllare e creare interazione tra strumenti di automazione del sito Web e Selenium come trovare gli elementi, navigare negli URL, ottenere proprietà degli attributi, confermare se il testo è presente nel webelement, alla ricerca di un elemento e altro ancora.

Puoi utilizzare una varietà di browser Web tra cui Firefox, Safari e Chrome. Ogni tipo di browser ha una classe specifica per quel tipo di browser come Firefoxdriver, Chromedriver, InternetxplorerDriver, ecc. Tutti i browser possono essere implementati tramite il metodo WebDriver.

Ecco la sintassi per l'utilizzo dell'interfaccia WebDriver:

dal webdriver di import selenio
Driver = WebDriver.Cromo()
autista.get ('https: // www.eBay.com ')

Nel pezzo fornito del codice, creiamo l'oggetto "driver" del webdriver. Qui, usiamo il browser Chrome con il metodo.Classe Chrome (). Successivamente, il browser lancia e apre l'URL dato.

Esempio 1:

In questo primo programma, viene implementato un esempio di attesa esplicito molto semplice che è molto utile per i principianti e gli sviluppatori esperti.

Ci sono scenari in cui troviamo per la prima volta le "offerte quotidiane" e navighiamo alla pagina delle offerte quotidiane. Se la condizione è vera, stampa la "condizione vera". Altrimenti, stampare l'eccezione "Condizione falsa".

Innanzitutto, importiamo tutte le librerie necessarie di selenio e browser. Per utilizzare l'attesa esplicita, importa le seguenti librerie:

Org di importazione.Openqa.selenio.supporto.UI.Condizioni previste;
Org di importazione.Openqa.selenio.supporto.UI.WebDriverwait;

Forniamo il codice completo di seguito:

pacchetto UI;
Importa Java.util.simultaneo.Time Unit;
Org di importazione.Openqa.selenio.Di;
Org di importazione.Openqa.selenio.WebElement;
Org di importazione.Openqa.selenio.cromo.Cromedriver;
Org di importazione.Openqa.selenio.supporto.UI.Condizioni previste;
Org di importazione.Openqa.selenio.supporto.UI.WebDriverwait;
Classe pubblica Explicit_wait
public static void main (string [] args)
Sistema.setProperty ("WebDriver.cromo.Driver "," C: \\ browserdrivers \\ Chromedriver.exe");
Driver ChromeDriver = new ChromeDriver ();
autista.maneggio().finestra().massimizzare ();
autista.get ("https: // www.eBay.com/");
WebDriverWait Wait = new WebDriverWait (driver, durata.di Seconds (10));
Tentativo
WebElement Element = Wait.fino a (lecondizioni previste.VisibilitàFelementLocated (da.linkText ("Daily Deals")));
elemento.clic();
Sistema.fuori.println ("condizione vero");

cattura (eccezione E)

Sistema.fuori.println (e);
Sistema.fuori.println ("condizione falso");

autista.esentato();

Ora, comprendiamo il codice precedente passo per passo e spieghiamo quali azioni esegue ogni riga.

Nel primo pezzo di codice, otteniamo le librerie del browser dalla macchina e quindi lanciamo i driver del browser Chrome.

In questo esempio, usiamo il browser Chrome. La seguente sintassi viene utilizzata per implementarla:

Sistema.setProperty ("WebDriver.cromo.Driver "," C: \\ browserdrivers \\ Chromedriver.exe");
Driver ChromeDriver = new ChromeDriver ();

Successivamente, massimizziamo la finestra del browser e apriamo il sito Web fornito utilizzando la seguente sintassi:

autista.maneggio().finestra().massimizzare ();
autista.get ("https: // www.eBay.com/");

Per questo esempio, utilizziamo il sito Web eBay situato all'indirizzo https: // www.eBay.com/.

Se vogliamo verificare se esiste o meno l'iper-linea "Affare quotidiano", dovremmo sapere dove è presente il "Deale quotidiano" sul sito Web. Per trovare il localizzatore LinkText dell'iper-linea delle "offerte quotidiane", dobbiamo ispezionare le "offerte quotidiane" in particolare sulla pagina Web e trovare il tag innerTetext. Lo screenshot è allegato nel seguente per vedere dove possiamo trovare il tag "Daily Deals".

Nella schermata precedente, vediamo quel tag per "Offerte quotidiane" è presente nella pagina Web. Se non esiste un tag presente, non esiste un presente iper-linea "Affari quotidiani". Dobbiamo usare questo suggerimento seguente:

autista.FindElement (di.Locatortype ("locatorvalue"));

Usiamo il driver.Metodo FindElements () per verificare se un elemento è presente su una pagina Web o no. L'oggetto "per" è un parametro per il comando Trova Element che fornisce un oggetto del tipo WebElement. Le varie tecniche di localizzazione come nome, id, nome di classe, xpath, ecc. Il testo del collegamento può essere utilizzato con l'oggetto "per". Come siamo a conoscenza, un elenco di webelements che si trovano utilizzando il parametro "By Locator" viene restituito dalla funzione FindElements (). Se viene trovato l'elemento, viene restituito un elenco di Webelement diverso da zero. Altrimenti, viene restituito un elenco di dimensioni 0. Di conseguenza, la lunghezza dell'elenco può essere utilizzata per determinare se una voce è presente o meno.

Per questo esempio, utilizziamo il localizzatore LinkText come mostrato nella seguente sintassi:

autista.FindElement (di.LinkText ("Daily Deals")).clic();

Nel codice di codice precedente, trova prima il testo Hyper-line "Offerte quotidiane". Successivamente, utilizzare la funzione Click () per navigare su un'altra pagina.

Successivamente, l'attesa esplicita è implementata nella seguente sintassi:

WebDriverWait Wait = new WebDriverWait (driver, durata.di Seconds (10));

Quando utilizziamo il precedente pezzo di codice per l'attesa esplicita, tieni presente che la funzione attende 10 secondi come definito nel metodo WebDriverWait fino a quando non viene trovato il localizzatore dato.

Il metodo WebDriverWait viene utilizzato per implementare esplicitamente. Crea l'oggetto di riferimento "Aspetta" della classe WebDriverWait. Quindi, allocare la memoria con il nuovo WebDriverWait e passare due parametri (1) L'oggetto di riferimento del driver Web e menzionato (2) durata del tempo (driver, durata.di Seconds (10)).

Ora, usa l'oggetto di riferimento della classe WebDriverWait che è "aspettare" per chiamare il metodo fino a () e passare la visibilità prevista per la visibilità (da parte di.id) condizione. Se la condizione prevista è vera, restituire il webelement e attendere 10 secondi fino a quando questa condizione non diventa realtà. Questa condizione prevista è la specifica WebElement. Qui, dobbiamo aspettare la visibilità "elemento". Se l'elemento è visibile entro 5 secondi, aspetta. In caso contrario, massimizza l'attesa per 10 secondi.

Ecco la sintassi data per la condizione prevista:

Aspettare.fino a (lecondizioni previste.VisibilitàFelementLocated (da.id ("elemento")));

Esistono molte condizioni previste che sono fornite da selenio come AlertisPresent (), ElementsElectionStateTobe (), ElementToBeclickable (), ecc. Qui in questo tutorial, utilizziamo la condizione "VisibItyOfElementLocated ()".

Passiamo al prossimo pezzo di codice in cui abbiamo la "condizione vera":

Tentativo
WebElement Element = Wait.fino a (lecondizioni previste.VisibilitàFelementLocated (da.linkText ("Daily Deals")));
elemento.clic();
Sistema.fuori.println ("condizione vero");

cattura (eccezione E)

Sistema.fuori.println (e);
Sistema.fuori.println ("condizione falso");

Per verificare se l'elemento esiste o meno, utilizziamo un blocco di prova e catturare. Tutto quello che dobbiamo fare è provare a trovare l'elemento e interagire con esso.

WebElement Element = Wait.fino a (lecondizioni previste.VisibilitàFelementLocated (da.linkText ("Daily Deals")));
elemento.clic();
Sistema.fuori.println ("condizione vero");

Aspetta l'elemento con il link "Daily Deals". Se troviamo il WebElement, fai clic su quell'elemento per navigare su un'altra pagina e stampare la "condizione true" nella console.

Qui nella seguente screenshot di output, possiamo vedere che l'elemento ha esito positivo. Navigare nella pagina:

Passiamo al lavoro successivo del codice in cui abbiamo la "condizione falsa":

Tentativo
WebElement Element = Wait.fino a (lecondizioni previste.VisibilitàFelementLocated (da.linktext ("Element wront")));
elemento.clic();
Sistema.fuori.println ("condizione vero");

cattura (eccezione E)

Sistema.fuori.println (e);
Sistema.fuori.println ("condizione falso");

Se la pagina Web non è presente il testo Hyper-line "Element Wrong", lanciare l'eccezione e stampare l'output "Condition False" nella console.

Nella seguente screenshot di output, possiamo vedere che l'elemento non si trova senza successo:

Infine, dopo aver eseguito tutto il codice, chiudere il browser usando il metodo Quit ().

autista.esentato();

Conclusione

Ora hai imparato a conoscere i vantaggi di attesa espliciti di selenio. Imparerai come implementarlo in uno scenario reale. Questo articolo implementa l'esempio in cui si tiene l'esecuzione di un ulteriore codice fino a trovare l'elemento su un determinato tempo di attesa. Questo articolo contiene le condizioni di prova e catturare. Se l'elemento sta uscendo, stampare la "condizione vera". Altrimenti, stampare la "condizione falsa".