Selenium originalmente tenía una interfaz de tabla HTML. Los comandos se escribieron en “Selenese” en el formato de: comando | objetivo | datos
Se agregaron enlaces para idiomas y la función de automatización se resumió en Selenium Core. Este es un proyecto legado.
Selenium IDE es un complemento de Firefox que le permite grabar y reproducir la automatización. También permite exportar a una variedad de enlaces de idiomas.
Selenium RC (control remoto) fue el sucesor que incluyó un servidor separado (basado en Java) que le permite ejecutar pruebas de forma remota. Selenium RC también es heredado
Selenium Server es una aplicación Java que se ejecuta en el mismo sistema que el navegador. Escucha los comandos a través de HTTP y los ejecuta en el navegador utilizando una instancia de “controlador”. Actualmente utiliza el protocolo de conexión JSON adaptado de WebDriver.
Selenium Grid permite la agrupación de servidores de selenio en un servidor central. Permite la realización de pruebas multiplataforma simultáneas entre navegadores utilizando DesiredCapabilities.
WebDriver fue originalmente un proyecto separado en Google. Se fusionó con Selenium 2.0. La API de Selenium sigue siendo (en su mayoría) compatible a través de implementaciones WebDriverBackedSelenium.
Los controladores Selenium son implementaciones del protocolo WebDriver (ahora una especificación aprobada por WC3) que se ejecuta en un navegador. Con Selenium 3.0, el controlador de Firefox no es compatible internamente y requiere que GeckoDriver se ejecute como un proceso separado. También existen controladores correspondientes para otros navegadores: ChromeDriver, SafariDriver, InternetExplorerDriver, etc. Safari implementa el protocolo WebDriver internamente y no requiere un proceso por separado. Escuché que Microsoft Edge planea hacer esto también.
Appium es una implementación del protocolo WebDriver para aplicaciones móviles (iOS y Android). Depende de las API nativas de automatización móvil.
Los principales “sabores” de Selenium son las API de WebDriver y Selenium.
La API de WebDriver (en Java) se ve así:
WebDriver driver = new RemoteWebDriver (desiredCapabilities);
driver.get (url);
Elemento WebElement = driver.findElement (By.Id (id));
field.click ();
String text = field.getText ();
field.sendKeys (texto);
La API de Selenium utiliza una sintaxis diferente, y ahora solo se admite a través de bibliotecas de adaptadores, por ejemplo, WebDriverBackedSelenium.
El comando de selenio sigue el formato: comando | acción | valor
El protocolo de conexión JSON todavía usa este formato, pero también incluye una identificación de sesión.
El ejemplo anterior con Selenium se ve así:
Selenium selenium = new WebDriverBackedSelenium (driver, baseUrl);
selenium.open (url);
selenium.click (id);
Texto de cadena = storeText (id);
selenium.type (id, text);
Hay algunas variaciones en la sintaxis entre idiomas, y hay implementaciones (o dialectos) independientes adicionales, como WebdriverIO, que tiene una API cliente diferente.