Soy bastante nuevo en Python/JS y también pruebas automáticas con Selenium/WebDriver, ¡pero he progresado un poco!La secuencia de comandos de Selenium/WebDriver se ve interrumpida por la alerta - excepción "Mensaje: u'Modal dialog present" "
Ahora estoy atascado en un punto y es realmente frustrante.
El sitio web que estoy probando vende productos. Me las arreglé para hacer mi guión navegar al azar y llegar a la página de pago, rellenar datos ficticios, enviar los datos mediante el uso de:
browser.execute_script("document.Form.submit(); return true;")
browser.execute_script("processPayment(); return true;")
Por lo general, hay una ahora botón Pagar y haciendo clic en que los resultados de los elementos de la misma excepción y no había forma de que haga clic en Aceptar/Cancelar en él a través de WebDriver (sin WebElement), pero descubrí que al ejecutar este código JS puedo superarlo. La página que acabo de cargar (después de enviar los datos y confirmar su publicación) con una confirmación y todas las cargas de datos correctas, pero la secuencia de comandos de Python se interrumpe y no puedo continuar la prueba.
¿Existe una solución para esto? Lo que yo quiero que haga es hacer caso omiso de ese cuadro de diálogo modal, esperar a la siguiente página de confirmación para cargar y luego continuar elementos de colocación, la impresión de sus valores, almacenándolos etc.
intentado usar:
wait = ui.WebDriverWait(browser,10)
wait.until(lambda browser: browser.title.lower().startswith('Your Receipt'))
print(browser.title)
pero el guion se interrumpe Lo siento si esto ha sido respondido, pero no pude encontrarlo, ¡y también soy un novato!
¡Gracias de antemano!
EDITAR:
Did it! En mi caso lo que funcionó se me acaba de modificar mi código un poco
browser.execute_script("document.roomBookingForm.submit(); return true;")
alert = browser.switch_to_alert()
alert.dismiss()
browser.execute_script("processPayment(); return true;")
Nota para los novatos que se necesitan para importar una alerta.
from selenium.webdriver.common.alert import Alert
alert.dismiss() trabajó para mí. Gracias Tihomir S. –
Por supuesto, tenga en cuenta que alert.dismiss() presiona el botón "cancelar"; use alert.accept() para presionar "OK". –
y el navegador en la respuesta es la instancia de 'webdriver'. – Sinux