example chrome java selenium webdriver selenium-webdriver

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);`