efficient selenium scripting
Nel tutorial precedente, abbiamo discusso le implicazioni tecniche durante l'implementazione della registrazione in un framework . Abbiamo discusso utilità log4j a lungo. Abbiamo discusso i componenti di base che costituiscono log4j dal punto di vista dell'usabilità. Con le appendici e i layout, un utente può scegliere il formato / modello di registrazione desiderato e l'origine / posizione dei dati.
Nell'attuale 27 ° tutorial in questo serie completa di formazione online gratuita sul selenio , sposteremmo la nostra attenzione verso alcuni banali argomenti ancora importanti questo ci guiderà a risolvere alcuni problemi ricorrenti. Possiamo o meno usarli nello scripting quotidiano, ma sarebbero utili a lungo termine.
Noi vorremmo discutere alcuni concetti avanzati in cui tratteremo gli eventi del mouse e della tastiera, accedendo a più collegamenti implementando elenchi . Allora perché non iniziare e discutere brevemente questi argomenti con l'aiuto di scenari e frammenti di codice appropriati.
come aprire i file swf su Windows
Cosa imparerai:
- Esecutori JavaScript
- Accesso a più elementi in un elenco
- Gestione degli eventi di tastiera e mouse
- Conclusione
- Lettura consigliata
Esecutori JavaScript
Durante l'automazione di uno scenario di test, alcune azioni diventano una parte intrinseca degli script di test.
Queste azioni possono essere:
- Facendo clic su un pulsante, un collegamento ipertestuale, ecc.
- Digitando in una casella di testo
- Scorrimento in verticale o in orizzontale fino a quando l'oggetto desiderato non viene visualizzato
- E altro ancora
Ora, è evidente dai tutorial precedenti che il modo migliore per automatizzare tali azioni è utilizzare i comandi Selenium.
Ma cosa succede se i comandi del selenio non funzionano?
Sì, è assolutamente possibile che i comandi selenio di base ed elementari non funzionino in determinate situazioni.
Detto questo, per essere in grado di risolvere tale situazione, mettiamo in gioco gli esecutori JavaScript.
Cosa sono gli esecutori JavaScript?
L'interfaccia JavascriptExecutor fa parte di org.openqa.selenium e implementa la classe java.lang.Object. JavascriptExecutor presenta le capacità per eseguire JavaScript direttamente all'interno del browser web. Per poter eseguire JavaScript, nella sua implementazione vengono forniti alcuni meccanismi sotto forma di metodi insieme a un insieme specifico di parametri.
Metodi
executeScript (String script, args)
Come suggerisce il nome del metodo, esegue JavaScript all'interno della finestra corrente, avviso, frame ecc (la finestra su cui l'istanza WebDriver è attualmente concentrata)
executeAsyncScript (String script, args)
Come suggerisce il nome del metodo, esegue JavaScript all'interno della finestra corrente, avviso, frame, ecc (la finestra su cui l'istanza WebDriver è attualmente concentrata)
I parametri e l'istruzione import sono comuni a entrambi i metodi Executor.
Parametri
Script: lo script da eseguire
Argomento: i parametri richiesti dallo script per la sua esecuzione (se presenti)
Dichiarazione di importazione
Per poter utilizzare JavascriptExecutors nei nostri script di test, dobbiamo importare il pacchetto utilizzando la seguente sintassi:
import org.openqa.selenium.JavascriptExecutor;
Codice di esempio
# 1) Fare clic su un elemento web
// Locating the web element using id WebElement element = driver.findElement(By.id('id of the webelement')); // Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Clicking the web element js.executeScript('arguments(0).click();', element);
# 2) Digitare in una casella di testo
// Instantiating JavascriptExecutor JavascriptExecutor js = (JavascriptExecutor)driver; // Typing the test data into Textbox js.executeScript('document.getElementById(‘id of the element’).value=’test data’;”);
# 3) Scorrendo verso il basso fino a quando l'elemento web è nella vista
WebElement element=driver.findElement(By.xpath('//input(contains(@value,'Save'))')); // Instantiating the javascriptExecutor and scrolling into the view in the single test step ((JavascriptExecutor)driver).executeScript('arguments(0).scrollIntoView(true);',element);
È possibile trovare vari altri modi per scrivere il codice per accedere a JavascriptExecutors.
Accesso a più elementi in un elenco
A volte, possiamo imbatterci in elementi dello stesso tipo come più collegamenti ipertestuali, immagini ecc. Disposti in un elenco ordinato o non ordinato. Pertanto, ha assolutamente senso trattare tali elementi con un singolo pezzo di codice e questo può essere fatto utilizzando WebElement List. Fare riferimento allo screenshot qui sotto per comprendere gli elementi di cui sto parlando.
Nell'immagine sopra, vediamo che i vari fornitori di servizi appartengono a un elenco non ordinato. Pertanto, la verifica della cliccabilità e della visibilità di questi elementi può essere eseguita da un singolo pezzo di codice utilizzando un elenco di elementi.
cos'è il test funzionale con l'esempio
Dichiarazione di importazione
Per poter utilizzare un elenco WebElement nei nostri script di test, è necessario importare il pacchetto utilizzando la seguente sintassi:
import java.util.List;
Codice di esempio
// Storing the list List serviceProviderLinks = driver.findElements(By.xpath('//div(@id='ServiceProvider')//ul//li')); // Fetching the size of the list int listSize = serviceProviderLinks.size(); for (int i=0; iEsistono vari requisiti in base ai quali gli elenchi possono essere utilizzati per verificare gli elementi con opportune modifiche all'implementazione.
Gestione degli eventi di tastiera e mouse
Gestione degli eventi della tastiera
Come anche detto in precedenza, ci sono n numeri di modi per affrontare lo stesso problema enunciato in diversi contesti.
Pertanto, a volte sorge la necessità di affrontare un problema cambiando la strategia di negoziazione convenzionale con una strategia più avanzata. Ho assistito a casi in cui non potevo gestire avvisi e pop-up ecc. Dai comandi del selenio, quindi ho dovuto optare per diverse utilità Java per gestirli utilizzando i tratti della tastiera e gli eventi del mouse.
La classe Robot è una di queste opzioni per eseguire eventi della tastiera e eventi del mouse.
Cerchiamo di comprendere il concetto con l'aiuto di uno scenario e della sua implementazione.
Scenario:
Cerchiamo di raccogliere una situazione in cui sullo schermo appare un pop-up non necessario che non può essere accettato o ignorato utilizzando l'interfaccia di avviso, quindi l'unica opzione saggia che ci rimane è chiudere la finestra utilizzando i tasti di scelta rapida - 'Alt + barra spaziatrice + C' . Vediamo come chiudiamo il popup utilizzando Robot Class.
Prima di iniziare l'implementazione, dovremmo importare il pacchetto necessario per poter utilizzare la classe Robot all'interno del nostro script di test.
Dichiarazione di importazione
import java.awt.Robot;
Codice di esempio
// Instantiating Robot class Robot rb =new Robot(); // Calling KeyPress event rb.keyPress(KeyEvent.VK_ALT); rb.keyPress(KeyEvent.VK_SPACE); rb.keyPress(KeyEvent.VK_C); // Calling KeyRelease event rb.keyRelease(KeyEvent.VK_C); rb.keyRelease(KeyEvent.VK_SPACE); rb.keyRelease(KeyEvent.VK_ALT);
La classe robot può anche essere utilizzata per gestire gli eventi del mouse, ma vediamo qui le capacità del selenio per gestire gli eventi del mouse.
Gestione degli eventi del mouse
WebDriver offre un'ampia gamma di utilità di interazione che l'utente può sfruttare per automatizzare gli eventi del mouse e della tastiera. Action Interface è una di queste utilità che simula le interazioni del singolo utente.
Pertanto, assisteremo al passaggio del mouse su un menu a discesa che quindi apre un elenco di opzioni nello scenario successivo.
Scenario:
- Passa il mouse sul menu a discesa
- Fare clic su uno degli elementi nelle opzioni dell'elenco
Dichiarazione di importazione
import org.openqa.selenium.interactions.Actions;
Codice di esempio
miglior software di ottimizzazione per Windows 10
// Instantiating Action Interface Actions actions= new Actions(driver); // howering on the dropdown actions.moveToElement(driver.findElement(By. id ('id of the dropdown'))).perform(); // Clicking on one of the items in the list options WebElement subLinkOption=driver.findElement(By.id('id of the sub link')); subLinkOption.click();
Conclusione
In questo tutorial, abbiamo discusso alcuni argomenti avanzati relativi allo scripting efficiente e alla risoluzione dei problemi di scenari in cui all'utente è richiesto di gestire gli eventi del mouse e della tastiera. Abbiamo anche discusso su come memorizzare più di un elemento web in un elenco. Spero che tu possa risolvere questi impedimenti se riscontrati.
Prossimo tutorial n. 28 : Per il prossimo tutorial della serie, discuteremo di concetto di test di database utilizzando Selenium WebDriver . Saremmo testimoni del meccanismo di connessione al database, colpendo le query sul selenio e recuperando i risultati tramite Selenium WebDriver Code.
Lettura consigliata
- Introduzione a Selenium WebDriver - Selenium Tutorial # 8
- Debug degli script di selenio con i registri (tutorial di Log4j) - Esercitazione di selenio # 26
- 30+ Migliori tutorial sul selenio: impara il selenio con esempi reali
- Esercitazione sul selenio di cetriolo: integrazione con WebDriver di selenio Java di cetriolo
- Come individuare gli elementi nei browser Chrome e IE per la creazione di script di selenio - Tutorial sul selenio n. 7
- Implementazione del nostro primo script WebDriver - Selenium WebDriver Tutorial # 10
- WebDriver intera configurazione e installazione con Eclipse - Selenium Tutorial # 9
- Creazione di generici e tute di prova - Tutorial sul selenio # 22