Ejecución paralela en Selenium: manejo de sesiones & Dependencia de TestNG

Tabla de contenido:

Anonim

Para comprender cómo ejecutar scripts en paralelo, primero comprendamos

¿Por qué necesitamos el manejo de sesiones?

Durante la ejecución de la prueba, Selenium WebDriver tiene que interactuar con el navegador todo el tiempo para ejecutar los comandos dados. En el momento de la ejecución, también es posible que, antes de que finalice la ejecución actual, alguien más comience la ejecución de otro script, en la misma máquina y en el mismo tipo de navegador.

En tal situación, necesitamos un mecanismo por el cual nuestras dos ejecuciones diferentes no se superpongan entre sí. Esto se puede lograr utilizando Session Handling en Selenium.

¿Cómo lograr el manejo de sesiones en Selenium WebDriver?

Si comprueba el código fuente de Selenium WebDriver, encontrará una variable denominada 'sessionId'. Siempre que creamos una nueva instancia de un objeto WebDriver, se generará un nuevo 'sessionId' y se adjuntará con ese controlador de Firefox / Chrome / IE en particular ().

Entonces, cualquier cosa que hagamos después de esto se ejecutará solo en esa sesión particular del navegador Firefox.

Como esta es una funcionalidad incorporada, no hay una necesidad explícita de asignar la identificación de sesión

Ejemplo de código: aquí se generarán dos sesiones diferentes para dos WebDriver diferentes.

importar org.openqa.selenium.WebDriver;importar org.openqa.selenium.firefox.FirefoxDriver;SessionHandling de clase pública {public static void main (String ... strings) {// Primera sesión de WebDriverControlador WebDriver = nuevo FirefoxDriver ();// Ir al sitio de guru99driver.get ("http://demo.guru99.com/V4/");// Segunda sesión de WebDriverWebDriver driver2 = new FirefoxDriver ();// Ir al sitio de guru99driver2.get ("http://demo.guru99.com/V4/");}}

Cómo ejecutar pruebas en paralelo con selenio

Hay situaciones en las que desea ejecutar varias pruebas al mismo tiempo.

En tales casos, se puede utilizar el atributo "paralelo"

El atributo paralelo de la etiqueta suite puede aceptar cuatro valores:

pruebas Todos los casos de prueba dentro de la etiqueta del archivo xml de prueba se ejecutarán en paralelo.
clases Todos los casos de prueba dentro de una clase Java se ejecutarán en paralelo
métodos Todos los métodos con la anotación @Test se ejecutarán en paralelo.
instancias Los casos de prueba en la misma instancia se ejecutarán en paralelo, pero dos métodos de dos instancias diferentes se ejecutarán en un hilo diferente.

El atributo thread-count le permite especificar cuántos subprocesos deben asignarse para esta ejecución.

Ejemplo completo: en este ejemplo, tres casos de prueba se ejecutarán en paralelo y completarán los datos de inicio de sesión en http://demo.guru99.com

El proyecto completo se verá así:

TestGuru99MultipleSession.java

importar org.openqa.selenium.WebDriver;importar org.openqa.selenium.chrome.ChromeDriver;import org.testng.annotations.Test;public class TestGuru99MultipleSession {@Pruebapublic void ejecutSessionOne () {// Primera sesión de WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Controlador WebDriver = nuevo ChromeDriver ();// Ir al sitio de guru99driver.get ("http://demo.guru99.com/V4/");// busca el cuadro de texto del nombre de usuario y rellénalodriver.findElement (By.name ("uid")). sendKeys ("Driver 1");}@Pruebapublic void executeSessionTwo () {// Segunda sesión de WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Controlador WebDriver = nuevo ChromeDriver ();// Ir al sitio de guru99driver.get ("http://demo.guru99.com/V4/");// busca el cuadro de texto del nombre de usuario y rellénalodriver.findElement (By.name ("uid")). sendKeys ("Driver 2");}@Pruebapublic void ejecutSessionThree () {// Tercera sesión de WebDriverSystem.setProperty ("webdriver.chrome.driver", "chromedriver.exe");Controlador WebDriver = nuevo ChromeDriver ();// Ir al sitio de guru99driver.get ("http://demo.guru99.com/V4/");// busca el cuadro de texto del nombre de usuario y rellénalodriver.findElement (By.name ("uid")). sendKeys ("Driver 3");}}

TestNG.XML

Orden y dependencia de los casos de prueba

Puede establecer el orden y la dependencia de la ejecución del caso de prueba.

Suponga que tiene dos casos de prueba, 'testGuru99TC1' y 'testGuru99TC2' y desea ejecutar el caso de prueba 'testGuru99TC2' antes de 'testGuru99TC1'. En ese caso, usaremos el atributo 'depende de métodos' para hacer la dependencia y el orden de ejecución.

Resumen

  • Se crea un nuevo sessionID para una nueva instancia de WebDriver.
  • Una sesión se vinculará con un navegador en particular.
  • Usando hilo de atributo y paralelo, ejecuta sus scripts en paralelo.
  • Puede usar la dependencia de atributos para establecer el orden para probar la ejecución