TimeOutException in Selenium
In Selenium, TimeOut exception occurs when a command takes longer than the wait time to avoid the ElementNotVisible Exception.
If the commands do not complete even after the wait time is over, a TimeOut Exception is thrown.
Solution
-
You can manually increase the wait time by hit-and-trial. If the problem persists for a longer period of time, there may be some other issue and you should continue onto the next solution.
-
You can explicitly add wait by using JavaScript Executor. This will wait until the function returns “complete” and then continue with the code.
//add webdriver wait for 30 seconds
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
//wait until the page return complete as its status
wait.until(webDriver -> ((JavascriptExecutor)webDriver).executeScript("return document.readyState").equals("complete"));
//fetch the webpage
driver.get("educative.io");
-
There may be a chance that there are multiple inputs present with the same id. If one of them is hidden, and Selenium is interacting with that element, then there is a chance that Selenium will not be able to return it.
You can try using some other property to locate the element such asCSS SelectororXpath. -
Use implicit waits. This will ensure all timeouts happen after the given time. This should be declared at the start of the program before carrying out any tasks.
driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
Free Resources