Puede ver an example I wrote que demuestra que la reutilización de navegadores funciona bien en WebDriver. Básicamente, siempre que se instancia una ventana del navegador desde WebDriver, puede usar getWindowHandles() para acceder siempre a ella. Si tiene varias ventanas abiertas, simplemente haga un seguimiento de ellas usando una lista. Puede identificar ventanas que aparecen de cierta manera o contener cierta información en ellas mediante el uso de varios métodos WebDriver.
En otras palabras, si WebDriver no abre una ventana del navegador, entonces WebDriver no tiene la capacidad de engancharse a ella.
Un ejemplo aproximado:
public static boolean selectWindow(WebDriver driver, String windowTitle){
//Search ALL currently available windows
for (String handle : driver.getWindowHandles()) {
String newWindowTitle = driver.switchTo().window(handle).getTitle();
if(newWindowTitle.equalsIgnoreCase(windowTitle))
//if it was found break out of the wait
return true;
}
return false;
}
En un proyecto que hice, he creado un método que devuelve ciertos códigos de estado int, dependiendo de mi disposición de las ventanas. Si el código de estado es lo que estoy esperando, entonces sé que la próxima prueba puede continuar sin iniciar sesión nuevamente o sin abrir una nueva ventana.
Por supuesto, si su marco de prueba, como Surefire o TestNG, bifurca los subprocesos por clase, entonces necesita una instancia de webdriver por clase. Si su marco de prueba se bifurca por método, deberá pasar la instancia de webdriver como argumento al método de prueba para que el hilo tenga acceso a él.
Eso es correcto. Siempre que todas las ventanas se hayan iniciado desde la misma instancia del controlador, no es demasiado problema reutilizar Windows. Solo necesita encontrar un método para poder cerrar ventanas secundarias y dejar una ventana principal abierta. – djangofan