2010-08-31 15 views
6

cómo ignorar un cuadro de alerta haciendo clic en el botón "Aceptar"? Vi en el grupo de Google WebDriver que Simon está agregando esta característica. No estoy seguro de si esto es compatible o no.WebDriver descartar un cuadro de alerta

Respuesta

17
driver.findElement(By.id("updateButton")).click(); 

//pop up with id "updateButton" opens

Alert alert = driver.switchTo().alert(); 
//update is executed 
alert.accept(); 
+0

Esta es la forma correcta de hacerlo, especialmente después de circa 2012. No veo por qué esto no se verifica como la respuesta a la pregunta, porque debería ser. – djangofan

8

Eche un vistazo a issue 27 in the Google Code Issues List. Usar la JavascriptExecutor para anular alerta del navegador:

((JavascriptExecutor)driver).executeScript("window.alert = function(msg){};"); 

Es una solución similar para manejar los cuadros de diálogo de confirmación.

((JavascriptExecutor)driver).executeScript("window.confirm = function(msg){return true;};"); 

Esta es una solicitud bastante popular, así que espero que se implemente pronto. La desventaja de estos enfoques es que no es fácil validar el texto en el mensaje. Es posible que desee pasar al Selenio para hacer eso.

+0

He tratado '(JavascriptExecutor) controlador() .executeScript ("window.confirm = function (msg) {return true;};"); 'pero sin suerte. Parece que nadie tiene una solución confiable. Realmente espero que puedan hacer esto pronto. Gracias de cualquier manera. – zihaoyu

+0

Verifique que su controlador se refiera a la página/marco correcto. Lo he ejecutado con éxito, así que debe ser algo único con tu página, no el código. – pnewhook

2

código C#:

IAlert alert = driver.SwitchTo().Alert(); 
alert.Accept(); 
System.Threading.Thread.Sleep(milliseconds); 
1

Python código:

driver.switch_to_alert().accept() 

Ver:

sitio paquetes/selenio/WebDriver/remote/webdriver.py

sitio paquetes/selenio/WebDriver/common/alert.py

Cuestiones relacionadas