32 votos

WebDriver cambiar de navegador abierto después de hacer clic en el botón

Tengo la situación, cuando haga clic en el botón abre una nueva instancia del explorador con los resultados de búsqueda. Es allí cualquier manera de cómo puedo conectar de nuevo abrió la ventana del navegador? Y trabajar con él, a continuación, volver a la original de navegador (primera pantalla).

Gracias.

49voto

Surya Puntos 1026

Usted puede cambiar entre ventanas de la siguiente manera:

//Store the current window handle
String winHandleBefore = driver.getWindowHandle();

//Perform the click operation that opens new window

//Switch to new window opened
for(String winHandle : driver.getWindowHandles()){
    driver.switchTo().window(winHandle);
}

// Perform the actions on new window

//Close the new window, if that window no more required
driver.close();

//Switch back to original browser (first window)

driver.switchTo().window(winHandleBefore);

//continue with original browser (first window)

3voto

Invy Puntos 130

Surya, a su manera no funciona, debido a dos razones:

  1. usted no puede cerrar conductor durante la evaluación de la prueba de como se va a perder el foco, antes de cambiar al elemento activo, y obtendrá NoSuchWindowException.
  2. si la prueba se ejecuta en ChromeDriver vas a obtener no es una ventana, pero la ficha haga clic en la aplicación. Como SeleniumDriver no puede actuar con pestañas, sólo cambiando entre ventanas, se cuelga haga clic en nueva pestaña donde se está abriendo, y se bloquea en tiempo de espera.

3voto

Prashanth Sams Puntos 959

Este script te ayuda a cambiar de una ventana Padre a un Niño de la ventana y de nuevo cntrl a la ventana Padre

String parentWindow = driver.getWindowHandle();
Set<String> handles =  driver.getWindowHandles();
   for(String windowHandle  : handles)
       {
       if(!windowHandle.equals(parentWindow))
          {
          driver.switchTo().window(windowHandle);
         <!--Perform your operation here for new window-->
         driver.close(); //closing child window
         driver.switchTo().window(parentWindow); //cntrl to parent window
          }
       }

2voto

StatusQuo Puntos 448

Yo uso iterador y un bucle while para almacenar los diferentes identificadores de ventana y, a continuación, cambiar de ida y vuelta.

//Click your link
driver.findElement(By.xpath("xpath")).click();
//Get all the window handles in a set
Set <String> handles =driver.getWindowHandles();
Iterator<String> it = handles.iterator();
//iterate through your windows
while (it.hasNext()){
String parent = it.next();
String newwin = it.next();
driver.switchTo().window(newwin);
//perform actions on new window
driver.close();
driver.switchTo().window(parent);
            }

2voto

user1999663 Puntos 21

Sólo para agregar el contenido ...

Para volver a la ventana principal(por defecto de la ventana) .

uso driver.switchTo().defaultContent();

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X