tutorial que webdriver testng selenium-grid selenium-chromedriver

webdriver - tutorial - que es selenium grid



TestNG Selenium Grid 2 no ejecuta pruebas en paralelo (2)

Desde mi punto de vista, tomaste la decisión correcta al elegir WebDriver y TestNG. Pero debido al hecho de que estas son herramientas realmente poderosas, hay algunas cosas básicas que debes saber.

En el primer paso, es importante tener algo de experiencia en programación en general.

En segundo lugar, hay algunos trucos específicos que puede agregar.

¿Por qué no inicializar un WebDriver en cada clase de prueba (ya sea en el constructor o en @BeforeClass)?

Más adelante, también puede usar el patrón @DataProvider y @Factory para realizar la configuración.

Eso es genial!

Parece que tengo un problema cuando intento ejecutar pruebas en paralelo usando TestNG junto con Selenium Grid 2.

Aunque se abre el número correcto de navegadores para que coincida con la cantidad de pruebas que estoy ejecutando, todas las instrucciones para todas las pruebas se activan en la misma ventana del navegador. Por ejemplo, cada prueba abrirá una página e intentará iniciar sesión. Se abrirán cuatro ventanas del navegador, pero una ventana del navegador navegará a la página de inicio de sesión cuatro veces y luego tecleará el nombre de usuario 4 veces, mientras el resto de las ventanas del navegador permanecerán abiertas. inactivo.

Así es como estoy comenzando la grilla:

java -jar selenium-server-standalone-28.0.jar -role hub java -jar selenium-server-standalone-28.0.jar -webdriver.chrome.driver="*location*/chromedriver_mac" -role node

Así es como se configura el conjunto de aplicaciones xml:

<suite name="testng" verbose="1" parallel="classes"> <test name="chrome"> <packages> <package name="login"/> <package name="lists"/> </packages> </test> </suite>

Y aquí hay un ejemplo de cómo se presentan las pruebas:

public class login_logout extends TestBase { @Test public void login(){ //initiates login page object and call super user login LoginPage login = LoginPage.navigateTo(driver, base_url) LoggedInPage loggedIn = login.superuserlogin(); } }

Base de prueba se presenta de la siguiente manera:

public class TestBase { public static WebDriver driver; public static DesiredCapabilitiess capabilities; @BeforeClass public static void setUp(){ base_url = "*login page url*; capabilities = DesiredCapabilities.chrome(); driver = new RemoteWebDriver(capabilities); driver.get(base_url); } }

Probablemente sea algo realmente obvio que me falta, pero cualquier ayuda sería apreciada.

Gracias por adelantado.


El objeto del controlador es estático. De modo que tiene 4 inicializaciones y 4 navegadores en marcha, pero como el controlador es estático, solo contiene la referencia al último navegador inicializado y, por lo tanto, todos sus comandos se ejecutan contra el mismo controlador. Puedes intentar explorar objetos Threadlocal para tus carreras paralelas.