selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: selenium selenium

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element:


Could be a race condition where the find element is executing before it is present on the page. Take a look at the wait timeout documentation. Here is an example from the docs

from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECdriver = webdriver.Firefox()driver.get("http://somedomain/url_that_delays_loading")try:    element = WebDriverWait(driver, 10).until(        EC.presence_of_element_located((By.ID, "myDynamicElement"))    )finally:    driver.quit()


Looks like it takes time to load the webpage, and hence the detection of webelement wasn't happening. You can either use @shri's code above or just add these two statements just below the code driver = webdriver.Firefox():

driver.maximize_window() # For maximizing windowdriver.implicitly_wait(20) # gives an implicit wait for 20 seconds


You can also use below as an alternative to the above two solutions:

import timetime.sleep(30)