Selenium WebDriver

Abbiamo bisogno di browser per testare le applicazioni web. Selenium automatizza il browser e ci aiuta nell’automazione del testing delle applicazioni web su diversi browser. L’API di Selenium ha fornito molte classi e interfacce per lavorare con diversi tipi di browser ed elementi HTML.

Cos’è l’interfaccia Selenium WebDriver?

Selenium WebDriver è un’interfaccia che definisce un insieme di metodi. Tuttavia, l’implementazione è fornita dalle classi specifiche del browser. Alcune delle classi di implementazione sono AndroidDriver, ChromeDriver, FirefoxDriver, InternetExplorerDriver, IPhoneDriver, SafariDriver ecc. La funzionalità principale di WebDriver è di controllare il browser. Ci aiuta persino a selezionare gli elementi della pagina HTML e a eseguire operazioni su di essi come cliccare, riempire campi di un modulo ecc.

Selenium WebDriver

Se vogliamo eseguire i nostri casi di test in un browser Firefox dobbiamo usare la classe FirefoxDriver. Allo stesso modo, se vogliamo eseguire i casi di test nel browser Chrome dobbiamo usare la classe ChromeDriver.

Metodi Selenium WebDriver

SearchContext è l’interfaccia di livello superiore nell’API Selenium che ha due metodi – findElement() e findElements(). L’interfaccia Selenium WebDriver ha molti metodi astratti come get(String url), quit(), close(), getWindowHandle(), getWindowHandles(), getTitle() ecc. WebDriver ha interfacce nidificate come Window, Navigation, Timeouts ecc. Queste interfacce nidificate vengono utilizzate per eseguire operazioni come back(), forward() ecc.

Method Description
get(String url) This method will launch a new browser and opens the given URL in the browser instance.
getWindowHandle() It is used to handle single window i.e. main window. It return type is string. It will returns browser windlw handle from focused browser.
getWindowHandles() It is used to handle multiple windows. It return type is Set. It will returns all handles from all opened browsers by Selenium WebDriver.
close() This command is used to close the current browser window which is currently in focus.
quit() This method will closes all the browsers windows which are currently opened and terminates the WebDriver session.
getTitle() This method is used to retrieve the title of the webpage the user currently working on.

Elenco delle classi che implementano WebDriver

Le principali classi di implementazione dell’interfaccia WebDriver sono ChromeDriver, EdgeDriver, FirefoxDriver, InternetExplorerDriver ecc. Ogni classe driver corrisponde a un browser. Creiamo semplicemente l’oggetto delle classi driver e lavoriamo con esse.

Class Description
ChromeDriver It helps you to execute Selenium Scripts on Chrome browser.
FirefoxDriver It helps you to execute Selenium Scripts on Firefox browser.
InternetExplorerDriver It helps you to execute Selenium Scripts on InternetExplorer browser.

Elenco dei comandi su WebElement

Selenium WebElement rappresenta un elemento HTML. Possiamo ottenere un’istanza di WebElement utilizzando il metodo findElement() e quindi eseguire azioni specifiche come click, submit ecc. Alcuni dei metodi WebElement comunemente utilizzati sono:

Command Description Syntax
findElement() This method finds the first element within the current web page by using given locator. WebElement element = driverObject.findElement(By.locator(“value”));
sendKeys() This method enters a value in to an Edit Box or Text box. driver.findElement(By.elementLocator(“value”)).sendkeys(“value”);
clear() It clears the Value from an Edit box or Text Box. driverObject.findElement(By.locatorname(“value”)).clear();
click() It clicks an Element (Button, Link, Checkbox) etc. driverObject.findElement(By.ElementLocator(“LocatorValue”)).click();

Esempio di Selenium WebDriver – Stampare il Titolo del Sito Web

Guardiamo un esempio semplice di utilizzo di Selenium WebDriver per invocare il browser Firefox e stampare il titolo di un sito web.

package com.journaldev.selenium.firefox;

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

public class GeckoDriverExample {

	public static void main(String[] args) {
		//specificare la posizione di GeckoDriver per l'automazione del browser Firefox
		System.setProperty("webdriver.gecko.driver", "geckodriver");
		WebDriver driver = new FirefoxDriver();
		driver.get("https://journaldev.com");
		String PageTitle = driver.getTitle();
		System.out.println("Page Title is:" + PageTitle);
		driver.close();
	}
}

Output:

1551941763563	mozrunner::runner	INFO	Running command: "/Applications/Firefox.app/Contents/MacOS/firefox-bin" "-marionette" "-foreground" "-no-remote" "-profile" "/var/folders/1t/sx2jbcl534z88byy78_36ykr0000gn/T/rust_mozprofile.t6ZyMHsrf2bh"
1551941764296	[email protected]	WARN	Loading extension '[email protected]': Reading manifest: Invalid host permission: resource://pdf.js/
1551941764297	[email protected]	WARN	Loading extension '[email protected]': Reading manifest: Invalid host permission: about:reader*
Can't find symbol 'GetGraphicsResetStatus'.
1551941765794	Marionette	INFO	Listening on port 61417
1551941765818	Marionette	WARN	TLS certificate errors will be ignored for this session
Mar 07, 2019 12:26:05 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
Page Title is:JournalDev - Java, Java EE, Android, Python, Web Development Tutorials
1551941814652	Marionette	INFO	Stopped listening on port 61417
Selenium WebDriver Example

Puoi trovare altri esempi di Selenium nel nostro Repository GitHub.

Riferimento: Codice GitHub di WebDriver

Source:
https://www.digitalocean.com/community/tutorials/selenium-webdriver