Uno extraño aquí. Al probar esto manualmente, hago clic en el botón Eliminar, espero la ventana emergente
Luego hago clic en Aceptar y el registro se elimina como se esperaba. Pero cuando trato de hacer lo mismo en Java/Selenium es así->
WebElement element = _driver.findElement(By.id("btnDeletePatient")); JavascriptExecutor executor = (JavascriptExecutor)_driver; executor.executeScript("arguments[0].click();", element);o
_driver.findElement(By.id("btnDeletePatient")).click();Ambos tienen la misma respuesta, aparecerá la ventana emergente Aceptar/Cancelar y luego desaparecerá inmediatamente.
este es el codigo del boton
<input type="submit" name="ctl00$cpContentLeft$btnPatient" value="Delete User" onclick="return userDelete();" id="ctl00_cpContentLeft_btnPatient" tabindex="81" class="btn btn-outline-primary btn-sm mr-3">Y este es el código para la función userDelete
function userDelete() { if (confirm("Are you sure you wish to delete this user?")) { return true; } else { return false; } }Además, ahora probé lo mismo en Edge, lo mismo, por lo que no parece ser un problema de Chrome.
¿Alguien tiene alguna idea de qué está causando esto, por favor?
Más pruebas de la siguiente manera. Coloco un punto de interrupción justo en el punto en el que la secuencia de comandos hará clic en eliminar ejecutar y ejecutar la secuencia de comandos. La página se carga como se esperaba y llego al punto del problema.
Hago clic manualmente en el botón Eliminar, aparece la ventana emergente y luego permanece hasta que hago clic en cancelar.
Usando este código paso y aparece la ventana emergente y luego desaparece instantáneamente.
_driver.findElement(By.id("ctl00_cpContentLeft_btnDelete")).click();
Usando este código, la respuesta es decir 2.
_driver.findElement(By.id("ctl00_cpContentLeft_btnDeletePatient")).sendKeys(Keys.SPACE);
Luego pruebo con un doble clic y no pasa nada. En todas las pruebas no veo errores en la consola.
Espero que esté haciendo clic en el botón Eliminar antes de que la página se cargue por completo, es por eso que la ventana emergente desaparece repentinamente. agregue esperar antes de hacer clic en el botón eliminar.
Pasos:
agregue algunos códigos más aquí y capturas de pantalla también. eso seria mas util
Esto parece una alerta de script java. En Selenium, tenemos una forma específica de manejar la alerta. No es necesario hacer clic en Aceptar. Primero puede esperar a que la alerta esté presente. Si está presente, cambie a esa alerta.
Luego, tenemos métodos específicos para manejar alertas en Selenium.
alert.accept() hace clic en ok.
alert.dismiss() hace clic en cancelar.
Ejemplo de código de la documentación de selenio:
driver.findElement(By.linkText("See a sample prompt")).click(); //Wait for the alert to be displayed and store it in a variable Alert alert = wait.until(ExpectedConditions.alertIsPresent()); //Type your message alert.sendKeys("Selenium"); //Press the OK button alert.accept(); //Press the Cancel button alert.dismiss(); //Store the alert in a variable for reuse String text = alert.getText();bien lo encontre
El problema estaba dentro del chromedriver, esta línea lo solucionó
chromeOptions.setCapability("comportamiento de alerta inesperado", "ignorar");
Ahora la ventana emergente permanece hasta que se activa en el script.
Vivimos y aprendemos, gracias por toda su ayuda.