Selenium WebDriver

Necesitamos navegadores para probar aplicaciones web. Selenium automatiza el navegador y nos ayuda en la automatización de pruebas de aplicaciones web en diferentes navegadores. La API de Selenium ha proporcionado muchas clases e interfaces para trabajar con diferentes tipos de navegadores y elementos HTML.

¿Qué es la Interfaz de Selenium WebDriver?

Selenium WebDriver es una interfaz que define un conjunto de métodos. Sin embargo, la implementación la proporcionan las clases específicas del navegador. Algunas de las clases de implementación son AndroidDriver, ChromeDriver, FirefoxDriver, InternetExplorerDriver, IPhoneDriver, SafariDriver, etc. La funcionalidad principal de WebDriver es controlar el navegador. Incluso nos ayuda a seleccionar los elementos de la página HTML y realizar operaciones en ellos, como hacer clic, llenar campos de un formulario, etc.

Selenium WebDriver

Si queremos ejecutar nuestros casos de prueba en un navegador Firefox, tenemos que usar la clase FirefoxDriver. De manera similar, si queremos ejecutar los casos de prueba en el navegador Chrome, tenemos que usar la clase ChromeDriver.

Métodos de Selenium WebDriver

La interfaz SearchContext es la interfaz superior en la API de Selenium que tiene dos métodos – findElement() y findElements(). La interfaz WebDriver de Selenium tiene muchos métodos abstractos como get(String url), quit(), close(), getWindowHandle(), getWindowHandles(), getTitle(), etc. WebDriver tiene interfaces anidadas como Window, Navigation, Timeouts, etc. Estas interfaces anidadas se utilizan para realizar operaciones como back(), forward(), etc.

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.

Lista de clases que implementan WebDriver

Las principales clases de implementación de la interfaz WebDriver son ChromeDriver, EdgeDriver, FirefoxDriver, InternetExplorerDriver, etc. Cada clase de controlador corresponde a un navegador. Simplemente creamos el objeto de las clases de controlador y trabajamos con ellas.

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.

Lista de comandos en WebElement

WebElement de Selenium representa un elemento HTML. Podemos obtener una instancia de WebElement usando el método findElement() y luego realizar acciones específicas como click, submit, etc. Algunos de los métodos WebElement comúnmente utilizados son:

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

Ejemplo de Selenium WebDriver – Imprimir el título del sitio web

Vamos a ver un ejemplo simple de cómo usar Selenium WebDriver para invocar el navegador Firefox e imprimir el título de un sitio 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) {
		//especificar la ubicación de GeckoDriver para la automatización del navegador 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();
	}
}

Salida:

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

Puedes ver más ejemplos de Selenium en nuestro Repositorio de GitHub.

Referencia: Código en GitHub de WebDriver

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