¿Cómo recupero el "texto" de la página que originó la alerta, especialmente ** después de ** que el usuario humano haya * hecho clic * [descartar] en la ** alerta ** de la página?

Básicamente, cuando aparece una alerta en JavaScript, puedodismiss() desde Python perfectamente bien, llamandoselenium.webdriver.common.alert.Alert(browser).dismiss().

Sin embargo, si el "usuario del navegador" descarta la alerta haciendo clic en[OK] (en la pantalla) con su mouse, luego la alerta del navegador obtiene "Lost in Space"body.text ya no se puede acceder desde python.

Entonces ... ¿Cómo recupero el "texto" de la página que origina la alerta, especialmentedespués el usuario humano tienehecho clic [despedir] en la páginaalerta?

Aquí están las sugerencias y un guión para demostrar el problema ...

FYI: El objetivo del código de origen es permitirusuario del navegador interveniren la pantalla en pruebas y respuesta manual a alertas específicas.

#!/usr/bin/env python
import os,sys,time
import selenium.webdriver
import selenium.webdriver.support.expected_conditions

print dict(python=sys.version,selenium=selenium.__version__)

path=os.path.join(os.getcwd(),"hello_worlds.html")
url="file:///"+path

open(path,"w").write("""<HTML>
  <HEAD><TITLE>Head Title</TITLE></HEAD>
  <BODY><H1>Hello, worlds!</H1></BODY>
</HTML> """)

browser=selenium.webdriver.Firefox()
browser.get(url)

body=browser.find_element_by_tag_name("body")
print "BODY:",body.text

try:

  for enum,world in enumerate("Mercury Venus Earth Mars Asteroids Jupiter Saturn Uranus Neptune".split()):

    if "Earth" in world: world+=": So do MANUALLY dismiss! {Click [OK] now!!!}"
    else: world+=": AUTO PILOT... please DONT dismiss! {done via selenium.dismiss()!}"

    browser.execute_script('alert("Hello, %s!")'%world)
    if selenium.webdriver.support.expected_conditions.alert_is_present():
      print selenium.webdriver.common.alert.Alert(browser).text

    time.sleep(enum+5)
    if "Earth" not in world: selenium.webdriver.common.alert.Alert(browser).dismiss()

    print "BODY:",body.text

finally:
  browser.quit()

Salida: (Choque en la Tierra)

{'python': '2.6.6 (r266:84292, Aug 18 2016, 15:13:37) \n[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)]', 'selenium': '2.53.2'}
BODY: Hello, worlds!
Hello, Mercury: AUTO PILOT... please DONT dismiss! {done via selenium.dismiss()!}!
BODY: Hello, worlds!
Hello, Venus: AUTO PILOT... please DONT dismiss! {done via selenium.dismiss()!}!
BODY: Hello, worlds!
Hello, Earth: So do MANUALLY dismiss! {Click [OK] now!!!}!
BODY:
Traceback (most recent call last):
  File "./js_alert.py", line 37, in <module>
    print "BODY:",body.text
...
selenium.common.exceptions.UnexpectedAlertPresentException: Alert Text: Hello, Earth: So do MANUALLY dismiss! {Click [OK] now!!!}!
Message: Unexpected modal dialog (text: Hello, Earth: So do MANUALLY dismiss! {Click [OK] now!!!}!) The alert disappeared before it could be closed.

Lo extraño es que si elusuario del navegador activa otra alerta (enotro página incluso!), luego unselenium.dismiss() tirarábody.text de vuelta del limbo y el selenio condesde entonces funcionará según (mis) expectativas.

Cualquier sugerencia sobre cómo volver el navegador alpage.body? (Y escapar de la alerta)

Anexo: Aquí hay preguntas similares (encontradas con búsquedas intensas):

descargando -Problemas al descargar el archivo usando Selenium + Firefoxalerta de javaSelenium WebDriver - Alerta de diálogo modal inesperadoUnexpectedAlertPresentException -Error de controlador web: "No hay alerta presente" después de que se lanza UnexpectedAlertPresentExceptionCapacidades deseadas¿Cómo manejar una alerta con la capacidad "UnexpectedAlertBehaviour" en Selenium?java y javascript -org.openqa.selenium.UnhandledAlertException: alerta inesperada abiertadesactiva la excepción o las capacidades deseadas -org.openqa.selenium.UnhandledAlertException: alerta inesperada abiertasugerencia sin clic -Cuando muestro un cuadro de diálogo, se genera una excepción "UnhandledAlertException: diálogo modal presente"IE y en la naturaleza -https://github.com/SeleniumHQ/selenium-google-code-issue-archive/issues/4839informe de error de Java?https://groups.google.com/forum/#!topic/webdriver/aNyOfEjMENg"Todavía no funciona". la captura de excepción no restablece el problema - (Sin embargo, casi exactamente el mismo problema) -Cómo manejar las alertas de JavaScript en selenio usando Pythonsugirió hacer undriver.findElement(By.id("myAlert")); pero eso arroja la misma excepción:https://sqa.stackexchange.com/questions/22482/why-my-alert-is-not-popping-upbrowser.refresh(); daUnexpectedAlertPresentException Entonces no funciona.https://github.com/angular/protractor/issues/1486browser.switch_to.window(browser.window_handles[0]) entoncesbody.text da:UnexpectedAlertPresentExceptionSimilar -Controlador web Python para manejar ventanas emergentes del navegador que no es una alerta

Respuestas a la pregunta(2)

Su respuesta a la pregunta