How to resolve ElementNotInteractableException: Element is not visible in Selenium webdriver?
Here I have the image of my code and the image of my error. Can anyone help me to resolve this issue?
Solution 1:
ElementNotInteractableException
ElementNotInteractableException is the W3C exception which is thrown to indicate that although an element is present on the HTML DOM, it is not in a state that can be interacted with.
Reasons & Solutions :
The reason for ElementNotInteractableException to occur can be numerous.
-
Temporary Overlay of other
WebElement
over theWebElement
of our interest :In this case, the direct solution would have been to induce
ExplicitWait
i.e.WebDriverWait
in combination withExpectedCondition
asinvisibilityOfElementLocated
as folllows:WebDriverWait wait2 = new WebDriverWait(driver, 10); wait2.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("xpath_of_element_to_be_invisible"))); driver.findElement(By.xpath("xpath_element_to_be_clicked")).click();
A better solution will be to get a bit more granular and instead of using
ExpectedCondition
asinvisibilityOfElementLocated
we can useExpectedCondition
aselementToBeClickable
as follows:WebDriverWait wait1 = new WebDriverWait(driver, 10); WebElement element1 = wait1.until(ExpectedConditions.elementToBeClickable(By.xpath("xpath_of_element_to_be_clicked"))); element1.click();
-
Permanent Overlay of other
WebElement
over theWebElement
of our interest :If the overlay is a permanent one in this case we have to cast the
WebDriver
instance asJavascriptExecutor
and perform the click operation as follows:WebElement ele = driver.findElement(By.xpath("element_xpath")); JavascriptExecutor executor = (JavascriptExecutor)driver; executor.executeScript("arguments[0].click();", ele);
Solution 2:
I got this because the element I wanted to interact with was covered by another element. In my case it was an opaque overlay to make everything r/o.
When trying to click an element UNDER another element we usualy get "... other Element would receive the click " but not always :.(