chrome - selenium webdriver java
Manejar la ventana emergente en Selenium WebDriver no funciona (1)
WebDriver inicia el navegador y navega hacia la URL y hace clic en un enlace en la aplicación, luego aparece un nuevo navegador con una ventana emergente y no podemos obtener ningún control con el navegador hasta que cierre la ventana emergente.
La ventana emergente solo tiene el botón "Aceptar". He intentado switchTo()
, manejador de ventana, pero no funciona. Además, no puede obtener el control del navegador como bloquea esta ventana emergente.
Debes proporcionar el identificador de ventana cuando cambies a la ventana emergente para que puedas controlar lo que sucede allí. Uso esta clase para facilitar el cambio de ida y vuelta.
Esto está en C #:
public class WindowManager
{
private string _parentWindowHandle;
private string _popupWindowHandle;
public void SwitchWindowFocusToPopup(IWebDriver driver, string NewWindowTitle)
{
//pass the expected popup window title so the IWebDriver can get
//the windowhandle and assign it to the current iWebDriver
IWebDriver popup = null;
var windowIterator = driver.WindowHandles;
foreach (var windowHandle in windowIterator)
{
popup = driver.SwitchTo().Window(windowHandle);
if (popup.Title == NewWindowTitle)
{
_popupWindowHandle = popup.CurrentWindowHandle;
break;
}
}
}
#region Properties
public string ParentWindowHandle
{
get
{
return _parentWindowHandle;
}
set
{
_parentWindowHandle = value;
}
}
public string PopupWindowHandle
{
get
{
return _popupWindowHandle;
}
set
{
_popupWindowHandle = value;
}
}
#endregion
}
entonces en mi programa hago esto:
WindowManager windowManager = new WindowManager();
windowManager.ParentWindowHandle = driver.CurrentWindowHandle;
//do stuff that opens the new window
//immediately switch focus to the popup so webdriver can work with the page
windowManager.SwitchWindowFocusToPopup(driver, "popup window title");
//do stuff with the popup
//close the popup
driver.Close();
//set the webdriver window back to the original parent window
driver.SwitchTo().Window(windowManager.ParentWindowHandle);`