eaiautomatontools.alerts.intercept_alert
Present the alert utilities for Selenium automaton. The intercept_alert method catches an alert popup (alert, confirm or prompt) and interact with it. We can either accept/dismiss the alert, check the alert message, input a text in a prompt.
After using this method the alert is closed.
Background
Launch a test web server serving controlled web pages on localhost port 8081
Use the python resources server.
>>> from eaiautomatontools.resources.app import Server
>>> myserver = Server()
>>> myserver.start()
...
Instantiate a web driver using the eaiautomatontools.browserServer
>>> from eaiautomatontools.browserServer import BrowserServer
>>> myWebDriver = BrowserServer()
Use a default browser such as Chrome in 32 bit version
>>> myWebDriver.browser_name = "chrome"
Serve the web driver
>>> myWebDriver.serve()
<BLANKLINE>
0
Open the form test page
>>> myWebDriver.go_to("http://localhost:8081")
0
Import the click tool
>>> from eaiautomatontools.actions import click_element
Import the element_text tool
>>> from eaiautomatontools.information import element_text
Import the alerts tools
>>> from eaiautomatontools.alerts import intercept_alert
Nominal case: give a web driver, give a valid fields
Alerts - javascript window.alert(message) command
Open the alert pop up
>>> click_element(driver=myWebDriver.webdriver, field={"type":"id", "value":"button_alert"})
0
Accept the alert without any check
>>> intercept_alert(driver=myWebDriver.webdriver)
0
Open the alert pop up
>>> click_element(driver=myWebDriver.webdriver, field={"type":"id", "value":"button_alert"})
0
Accept the alert if the message is correct
>>> intercept_alert(driver=myWebDriver.webdriver, messages=["A message from an alert.\nAnd a second line.",])
0
Open the alert pop up
>>> click_element(driver=myWebDriver.webdriver, field={"type":"id", "value":"button_alert"})
0
Dismiss the alert
>>> intercept_alert(driver=myWebDriver.webdriver, accept=False )
0
Confirms - javascript window.confirm(message) command
Open the alert pop up
>>> click_element(driver=myWebDriver.webdriver, field={"type":"id", "value":"button_confirm"})
0
Accept the alert without any check
>>> intercept_alert(driver=myWebDriver.webdriver)
0
The page displays "Confirmed"
>>> element_text(driver=myWebDriver.webdriver, field={"type":"id","value":"prompt_return"})
'Confirmed'
Open the alert pop up
>>> click_element(driver=myWebDriver.webdriver, field={"type":"id", "value":"button_confirm"})
0
Accept the alert if the message is correct
>>> intercept_alert(driver=myWebDriver.webdriver, messages=["A message from an alert.\nAnd a second line.",])
0
The page displays "Confirmed"
>>> element_text(driver=myWebDriver.webdriver, field={"type":"id","value":"prompt_return"})
'Confirmed'
Open the alert pop up
>>> click_element(driver=myWebDriver.webdriver, field={"type":"id", "value":"button_confirm"})
0
Dismiss the alert
>>> intercept_alert(driver=myWebDriver.webdriver, accept=False )
0
The page displays "Cancelled"
>>> element_text(driver=myWebDriver.webdriver, field={"type":"id","value":"prompt_return"})
'Cancelled'
Prompt - javascript window.prompt(message,default) command
Open the alert pop up
>>> click_element(driver=myWebDriver.webdriver, field={"type":"id", "value":"button_prompt"})
0
Accept the alert without any check
>>> intercept_alert(driver=myWebDriver.webdriver)
0
The page displays the prompt default message
>>> element_text(driver=myWebDriver.webdriver, field={"type":"id","value":"prompt_return"})
'A default message'
Open the alert pop up
>>> click_element(driver=myWebDriver.webdriver, field={"type":"id", "value":"button_prompt"})
0
Dismiss the alert without any check
>>> intercept_alert(driver=myWebDriver.webdriver, accept=False)
0
The page displays no message
>>> element_text(driver=myWebDriver.webdriver, field={"type":"id","value":"prompt_return"})
''
Open the alert pop up
>>> click_element(driver=myWebDriver.webdriver, field={"type":"id", "value":"button_prompt"})
0
Accept the alert checking its content
>>> intercept_alert(driver=myWebDriver.webdriver, messages=["A message from an alert.\nAnd a second line.",])
0
The page displays the prompt default message
>>> element_text(driver=myWebDriver.webdriver, field={"type":"id","value":"prompt_return"})
'A default message'
Open the alert pop up
>>> click_element(driver=myWebDriver.webdriver, field={"type":"id", "value":"button_prompt"})
0
Dismiss the alert checking its content
>>> intercept_alert(driver=myWebDriver.webdriver, messages=["A message from an alert.\nAnd a second line.",], accept=False)
0
The page displays no message
>>> element_text(driver=myWebDriver.webdriver, field={"type":"id","value":"prompt_return"})
''
Open the alert pop up
>>> click_element(driver=myWebDriver.webdriver, field={"type":"id", "value":"button_prompt"})
0
Enter "My prompt is rich." in the alert and accept the alert
>>> intercept_alert(driver=myWebDriver.webdriver, value="My prompt is rich.")
0
The page displays the entered message
>>> element_text(driver=myWebDriver.webdriver, field={"type":"id","value":"prompt_return"})
'My prompt is rich.'
Open the alert pop up
>>> click_element(driver=myWebDriver.webdriver, field={"type":"id", "value":"button_prompt"})
0
Enter "My prompt is rich." in the alert and dismiss the alert
>>> intercept_alert(driver=myWebDriver.webdriver, value="My prompt is rich.", accept=False)
0
The page displays no message
>>> element_text(driver=myWebDriver.webdriver, field={"type":"id","value":"prompt_return"})
''
Assertions
The web driver is mandatory
>>> intercept_alert(value="My prompt is rich.", accept=False)
Traceback (most recent call last):
...
TypeError: Driver is expected
The messages must be a string list
>>> intercept_alert(driver=myWebDriver.webdriver, messages="toto")
Traceback (most recent call last):
...
TypeError: Messages should be a list or None
The accept is a boolean
>>> intercept_alert(driver=myWebDriver.webdriver, accept="True")
Traceback (most recent call last):
...
TypeError: Accept is boolean True or False
Value is a string
>>> intercept_alert(driver=myWebDriver.webdriver, value=True)
Traceback (most recent call last):
...
TypeError: Value is None or a string
Exceptions
>>> click_element(driver=myWebDriver.webdriver, field={"type":"id", "value":"button_alert"})
0
We raise an Exception if the alert is not one of the listed message.
>>> intercept_alert(driver=myWebDriver.webdriver, messages=["toto",])
Traceback (most recent call last):
...
Exception: Message not found
We raise an ElementNotInteractableException if we try to enter a value in an alert which isn't a prompt.
>>> intercept_alert(driver=myWebDriver.webdriver, value="toto" )
Traceback (most recent call last):
...
selenium.common.exceptions.ElementNotInteractableException: Message: Cannot found an input field
<BLANKLINE>
>>> intercept_alert(driver=myWebDriver.webdriver)
0
There is no alert to interact with.
>>> intercept_alert(driver=myWebDriver.webdriver)
Traceback (most recent call last):
...
selenium.common.exceptions.NoAlertPresentException: Message: Can't interact with an alert as there is no displayed alert
<BLANKLINE>
Teardown
>>> myWebDriver.close()
0
>>> myWebDriver = None
>>> myserver.stop()
>>> myserver = None