While working with Selenium, there may be situations when we see that after page load action by the browser, the web elements are getting loaded at various intervals of time.
This type of situation leads to syncing problems between Selenium and the web element on the page. The identification of elements does not happen due to the absence of that element in DOM. The exception like ElementNotVisibleException is thrown due to this.
The wait concept in Selenium overcomes this problem and gives a delay between elements identification and actions performed on them. An implicit wait can be considered as default waiting time for the test steps in a test case.
An implicit wait is a global wait applied to all the elements on the page. The wait time is provided as arguments to the method. For example, if the wait time is 5 seconds, it shall wait this period of time before throwing a timeout exception.
An implicit wait is a dynamic wait which means if the element is available at the third second, then we shall move to the next step of the test case instead of waiting for the entire five seconds.
An implicit wait informs the web driver to poll for a specific amount of time. Once this time is determined, it remains for the entire driver session. The default time of an implicit wait is 0.
Some of the disadvantages of implicit waits are listed below −
Code Implementation with implicit wait.
from selenium import webdriver #browser exposes an executable file #Through Selenium test we will invoke the executable file which will then #invoke actual browser driver = webdriver.Chrome(executable_path="C:\\chromedriver.exe") #setting implicit wait 5 seconds driver.implicitly_wait(5) # to maximize the browser window driver.maximize_window() #get method to launch the URL driver.get("https://www.tutorialspoint.com/about/about_careers.htm") #to refresh the browser driver.refresh() # identifying the link with link_text locator driver.find_element_by_link_text("Company").click() #to close the browser driver.quit()