Selenio - Webdriver

WebDriver è uno strumento per automatizzare il test delle applicazioni web. È popolarmente noto come selenio 2.0. WebDriver utilizza un framework sottostante diverso, mentre Selenium RC utilizza JavaScript Selenium-Core incorporato nel browser che presenta alcune limitazioni. WebDriver interagisce direttamente con il browser senza alcun intermediario, a differenza di Selenium RC che dipende da un server. Viene utilizzato nel seguente contesto:

  • Test multi-browser che include funzionalità migliorate per i browser che non sono ben supportate da Selenium RC (Selenium 1.0).

  • Gestione di più frame, più finestre del browser, popup e avvisi.

  • Navigazione della pagina complessa.

  • Navigazione utente avanzata come il drag-and-drop.

  • Elementi dell'interfaccia utente basati su AJAX.

Architettura

WebDriver viene spiegato al meglio con un semplice diagramma dell'architettura come mostrato di seguito.

Selenio RC Vs WebDriver

Selenio RC Selenium WebDriver
L'architettura di Selenium RC è complicata, poiché il server deve essere attivo e funzionante prima di iniziare un test. L'architettura di WebDriver è più semplice di Selenium RC, poiché controlla il browser dal livello del sistema operativo.
Il server Selenio funge da intermediario tra il browser ei comandi Selenese. WebDriver interagisce direttamente con il browser e utilizza il motore del browser per controllarlo.
L'esecuzione dello script Selenium RC è più lenta, poiché utilizza un Javascript per interagire con RC. WebDriver è più veloce, poiché interagisce direttamente con il browser.
Selenium RC non può supportare l'esecuzione senza testa in quanto necessita di un browser reale con cui lavorare. WebDriver può supportare l'esecuzione senza testa.
È un'API semplice e piccola. API complessa e un po 'grande rispetto a RC.
API meno orientata agli oggetti. API puramente orientata agli oggetti.
Impossibile testare le applicazioni mobili. Può testare applicazioni per iPhone / Android.

Scripting utilizzando WebDriver

Facci capire come lavorare con WebDriver. Per dimostrazione, useremmohttps://www.calculator.net/. Eseguiremo un "Calcolatore percentuale" che si trova sotto "Calcolatore matematico". Abbiamo già scaricato i JAR WebDriver richiesti. Fare riferimento al capitolo "Configurazione ambientale" per i dettagli.

Step 1 - Avvia "Eclipse" dalla cartella Extracted Eclipse.

Step 2 - Seleziona l'area di lavoro facendo clic sul pulsante "Sfoglia".

Step 3 - Ora crea un "Nuovo progetto" dal menu "File".

Step 4 - Immettere il nome del progetto e fare clic su "Avanti".

Step 5- Vai alla scheda Librerie e seleziona tutti i JAR che abbiamo scaricato. Aggiungi il riferimento a tutti i JAR della cartella Selenium WebDriver Library e anche selenium-java-2.42.2.jar e selenium-java-2.42.2-srcs.jar.

Step 6 - Il pacchetto viene creato come mostrato di seguito.

Step 7 - Ora fai clic con il pulsante destro del mouse sul pacchetto e seleziona "Nuovo" >> "Classe" per creare una "classe".

Step 8 - Ora dai un nome alla classe e rendila la funzione principale.

Step 9 - Lo schema della classe è mostrato come di seguito.

Step 10- Ora è il momento di programmare. Lo script seguente è più facile da capire, in quanto contiene commenti incorporati per spiegare chiaramente i passaggi. Dai un'occhiata al capitolo "Localizzatori" per capire come catturare le proprietà degli oggetti.

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;

public class webdriverdemo {
   public static void main(String[] args) {
   
      WebDriver driver = new FirefoxDriver();
      //Puts an Implicit wait, Will wait for 10 seconds before throwing exception
      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
      
      //Launch website
      driver.navigate().to("http://www.calculator.net/");
      
      //Maximize the browser
      driver.manage().window().maximize();
      
      // Click on Math Calculators
      driver.findElement(By.xpath(".//*[@id = 'menu']/div[3]/a")).click();
      
      // Click on Percent Calculators
      driver.findElement(By.xpath(".//*[@id = 'menu']/div[4]/div[3]/a")).click();
      
      // Enter value 10 in the first number of the percent Calculator
      driver.findElement(By.id("cpar1")).sendKeys("10");
      
      // Enter value 50 in the second number of the percent Calculator
      driver.findElement(By.id("cpar2")).sendKeys("50");
      
      // Click Calculate Button
      driver.findElement(By.xpath(".//*[@id = 'content']/table/tbody/tr[2]/td/input[2]")).click();

      
      // Get the Result Text based on its xpath
      String result =
         driver.findElement(By.xpath(".//*[@id = 'content']/p[2]/font/b")).getText();

      
      // Print a Log In message to the screen
      System.out.println(" The Result is " + result);
      
      //Close the Browser.
      driver.close();
   }
}

Step 11 - L'output dello script precedente verrà stampato in Console.

Comandi più utilizzati

La tabella seguente elenca alcuni dei comandi utilizzati più di frequente in WebDriver insieme alla loro sintassi.

Sr.No. Comando e descrizione
1

driver.get("URL")

Per passare a un'applicazione.

2

element.sendKeys("inputtext")

Immettere del testo in una casella di input.

3

element.clear()

Cancella il contenuto dalla casella di input.

4

select.deselectAll()

Deseleziona tutte le OPZIONI dalla prima SELEZIONE nella pagina.

5

select.selectByVisibleText("some text")

Selezionare l'OPZIONE con l'ingresso specificato dall'utente.

6

driver.switchTo().window("windowName")

Spostare lo stato attivo da una finestra all'altra.

7

driver.switchTo().frame("frameName")

Oscilla da un fotogramma all'altro.

8

driver.switchTo().alert()

Aiuta a gestire gli avvisi.

9

driver.navigate().to("URL")

Vai all'URL.

10

driver.navigate().forward()

Per andare avanti.

11

driver.navigate().back()

Per tornare indietro.

12

driver.close()

Chiude il browser corrente associato al driver.

13

driver.quit()

Esce dal driver e chiude tutte le finestre associate a quel driver.

14

driver.refresh()

Aggiorna la pagina corrente.