WebDriverException: Element is not clickable at point (x, y)
This is a typical org.openqa.selenium.WebDriverException which extends java.lang.RuntimeException.
The fields of this exception are :
BASE_SUPPORT_URL: protected static final java.lang.String BASE_SUPPORT_URL
DRIVER_INFO: public static final java.lang.String DRIVER_INFO
SESSION_ID: public static final java.lang.String SESSION_ID
About your individual use case, the error tells it all :
WebDriverException: Element is not clickable at point (x, y). Another element would receive the click
As in your code, you have defined the wait as WebDriverWait wait = new WebDriverWait(driver, 10); but you are calling the click() method on the element before the ExplicitWait comes into play as in until(ExpectedConditions.elementToBeClickable).
Solution
The error Element is not clickable at point (x, y) can arise due to various reasons. You can address them by either of the following procedures:
1. Element not getting clicked due to JavaScript or AJAX calls present
Try to use Actions Class:
WebElement element_1 = driver.findElement(By.id("navigati new Actions(driver);
actions_1k.moveToElement(element_1).click().build().perform();
2. Element not getting clicked as it is not within Viewport
You can try to use JavascriptExecutor to bring the element within the Viewport:
WebElement myelement = driver.findElement(By.id("navigati (JavascriptExecutor)driver;
jse_2.executeScript("arguments[0].scrollIntoView()", myelement);
3. The page is getting refreshed before the element gets clickable.
In this case, induce ExplicitWait i.e. WebDriverWait as stated in the following point 4.
4. Element is present in the DOM but not clickable.
In this case, induce ExplicitWait with ExpectedConditions set to elementToBeClickable for the element to be clickable:
WebDriverWait wait_2= new WebDriverWait(driver, 10);
wait_2.until(ExpectedConditions.elementToBeClickable(By.id("navigati new WebDriverWait(driver, 10);
wait_3.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("ele_to_inv")));
6. Element is present but having permanent Overlay.
Use JavascriptExecutor which will allow you to send the click directly on the element.
WebElement element = driver.findElement(By.xpath("element_xpath"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
I hope, this will resolve your error.
For more solutions to other queries, you may visit the Selenium interview question page or you can pursue Selenium course for more knowledge