cómo manejar las alertas de javascript en selenium usando python

Así que hay un botón en el que quiero hacer clic y si es la primera vez que lo haces. Aparecerá una ventana emergente de alerta javascript. He estado usando Firebug y simplemente no puedo encontrar dónde se encuentra ese javascript y lo he intentado

if EC.alert_is_present: driver.switch_to_alert().accept() else: print("no alert") 

el código anterior funciona si hay un cuadro de alerta pero arrojará un error si no hay ninguno. a pesar de que hay una statement de otra cosa que incluso he intentado

  if EC.alert_is_present: driver.switch_to_alert().accept() elif not EC.alert_is_present: print("no alert") 

me lanza este error

 selenium.common.exceptions.NoAlertPresentException: Message: No alert is present 

¿Cómo podemos solucionar esto?

Utilice try catch y, si la alerta no está presente, no se NoAlertPresentException excepción NoAlertPresentException :

 from selenium.common.exceptions import NoAlertPresentException try: driver.switch_to_alert().accept() except NoAlertPresentException as e: print("no alert") 

Así es como lo haces:

 from selenium.common.exceptions import NoAlertPresentException try: context.driver.switch_to.alert.accept() except NoAlertPresentException: pass 

Puede reemplazar el pass con una statement print si lo desea. Tenga en cuenta el uso de switch_to.alert lugar de switch_to_alert() . Este último ha estado en desuso por un tiempo. En la versión de Selenium que tengo aquí, veo esto en su código:

 warnings.warn("use driver.switch_to.alert instead", DeprecationWarning)