This is caused by the following 3 types:
1.The element is not visible to click.
Use Actions or JavascriptExecutor for preparing it to click.
By Actions:
WebElement element = driver.findElement(By("element_path"));
Actions actions = new Actions(driver);
actions.moveToElement(element).click().perform();
By JavascriptExecutor:
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("scroll(250, 0)"); // if the element is on top.
jse.executeScript("scroll(0, 250)"); // if the element is on bottom.
or
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("arguments[0].scrollIntoView()", Webelement);
Then click on the element.
2.The page gets refreshed before it is clicking the element.
For this, make the page to wait for a few seconds.
3. The element is clickable one but there is a spinner/overlay on top of it
The below code would wait until the overlay disappears
By loadingImage = By.id("loading image ID");
WebDriverWait wait = new WebDriverWait(driver, timeOutInSeconds);
wait.until(ExpectedConditions.invisibilityOfElementLocated(loadingImage));
Then click on the element.
Want to be a SQL expert? Come and join this SQL Certification by Intellipaat.
Do check out the video below