exception
?An exception
is an event that occurs during the execution of a program that disrupts the normal flow of the program’s instructions.
NoAlertPresentException
occur in Selenium?Generally, the Selenium program driver tries to switch to an alert box or pop-up that is displayed on top of the webpage when an exception occurs.
However, if there is no alert box present at the time of switching, then Selenium raises NoAlertPresentException
instead.
selenium.common.exceptions.NoAlertPresentException: Message: no such alert
In some cases, this may happen because the website you want to automate may not have loaded fully. It’s also possible that the alert box element is not loaded into DOM yet.
In this demo, we go through how NoAlertPresentException
raises and how to resolve it.
NoAlertPresentException
.from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECimport timePATH=r"C:\Users\GUTKRISH\chromedriver.exe"#specify where your chrome driver present in your pcdriver = webdriver.Chrome(PATH)#provide website url heredriver.get("https://omayo.blogspot.com/")time.sleep(2)#finds element by idalert_button = driver.find_element_by_id("alert1")#click the button#alert_button.click()#It will raise exception as we are not clicking the button#switch to alert and click ok buttondriver.switch_to.alert.accept()
To resolve this, we need to click the button and switch to the alert box.
from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECimport timePATH=r"C:\Users\GUTKRISH\chromedriver.exe"#specify where your chrome driver present in your pcdriver = webdriver.Chrome(PATH)#provide website url heredriver.get("https://omayo.blogspot.com/")time.sleep(2)#finds element by idalert_button = driver.find_element_by_id("alert1")#click the buttonalert_button.click()#switch to alert and click ok buttondriver.switch_to.alert.accept()
It is possible that the element is not loaded into the DOM yet, so you can wait until that element loads.
WebDriverWait(driver, 10).until(EC.alert_is_present())
Consequently, the code becomes:
from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECimport timePATH=r"C:\Users\GUTKRISH\chromedriver.exe"#specify where your chrome driver present in your pcdriver = webdriver.Chrome(PATH)#provide website url heredriver.get("https://omayo.blogspot.com/")time.sleep(2)#finds element by idalert_button = driver.find_element_by_id("alert1")#click the buttonalert_button.click()# It will wait 10 seconds till alert loads into DOMWebDriverWait(driver, 10).until(EC.alert_is_present())#switch to alert and click ok buttondriver.switch_to.alert.accept()
The script will terminate when an exception
is raised. We can handle exceptions with the try except
block and continue with the flow of the script.
from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECimport timefrom selenium.common.exceptions import NoAlertPresentExceptionPATH=r"C:\Users\GUTKRISH\chromedriver.exe"#specify where your chrome driver present in your pcdriver = webdriver.Chrome(PATH)#provide website url heredriver.get("https://omayo.blogspot.com/")time.sleep(2)#finds element by idalert_button = driver.find_element_by_id("alert1")#click the button# alert_button.click()try:#switch to alert and click ok buttondriver.switch_to.alert.accept()except NoAlertPresentException:print("exception hanlded")print("Rest of the programm")