Selenium Web Driver & Java. Element is not clickable at point (36, 72). Other element would receive the click:

Multi tool use
Multi tool use
The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP


Selenium Web Driver & Java. Element is not clickable at point (36, 72). Other element would receive the click:



I used Explicit Waits and i have warning:



org.openqa.selenium.WebDriverException:
Element is not clickable at point (36, 72). Other element would receive
the click: ...
Command duration or timeout: 393 milliseconds



If I used Thread.sleep(2000) I don't receive any warnings.


Thread.sleep(2000)


@Test(dataProvider = "menuData")
public void Main(String btnMenu, String TitleResultPage, String Text) throws InterruptedException {
WebDriverWait wait = new WebDriverWait(driver, 10);
driver.findElement(By.id("navigationPageButton")).click();

try {
wait.until(ExpectedConditions.elementToBeClickable(By.cssSelector(btnMenu)));
} catch (Exception e) {
System.out.println("Oh");
}
driver.findElement(By.cssSelector(btnMenu)).click();
Assert.assertEquals(driver.findElement(By.cssSelector(TitleResultPage)).getText(), Text);
}





Are you using Chrome version 61+?
– demouser123
Jul 4 '17 at 18:28





@demouser123 i am using Firefox 47.0.1 and seleniumWebDriver 2.51.0
– Maria
Jul 4 '17 at 18:32





@Maria On which line are you getting the error? Thanks
– DebanjanB
Jul 4 '17 at 19:02





@DebanjanB In line: driver.findElement(By.id("navigationPageButton")).click();
– Maria
Jul 4 '17 at 19:08





That error means, there's another element overlaying the target element (fixed/absolute positioned overlay) or the z-index is too low. This might be caused by hover effects using transitions (slower than the minimum timeout, in this case 393ms). you should wait for #navigationPageButton to become visible (or clickable using elementToBeClickable() for that element too) or check whether all preconditions are met so that the button is clickable.
– try-catch-finally
Jul 4 '17 at 20:09


#navigationPageButton


elementToBeClickable()




4 Answers
4



This is a typical org.openqa.selenium.WebDriverException which extends java.lang.RuntimeException.


org.openqa.selenium.WebDriverException


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 usecase, the error tells it all :


WebDriverException: Element is not clickable at point (x, y). Other element would receive the click



It is clear from your code block that 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).


wait


WebDriverWait wait = new WebDriverWait(driver, 10);


click()


ExplicitWait


until(ExpectedConditions.elementToBeClickable)



The error Element is not clickable at point (x, y) can arise from different factors. You can address them by either of the following procedures:


Element is not clickable at point (x, y)



1. Element not getting clicked due to JavaScript or AJAX calls present



Try to use Actions Class:


Actions


WebElement element = driver.findElement(By.id("navigationPageButton"));
Actions actions = new Actions(driver);
actions.moveToElement(element).click().build().perform();



2. Element not getting clicked as it is not within Viewport



Try to use JavascriptExecutor to bring the element within the Viewport:


JavascriptExecutor


WebElement myelement = driver.findElement(By.id("navigationPageButton"));
JavascriptExecutor jse2 = (JavascriptExecutor)driver;
jse2.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 mentioned in point 4.


ExplicitWait


WebDriverWait



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:


ExplicitWait


ExpectedConditions


elementToBeClickable


WebDriverWait wait2 = new WebDriverWait(driver, 10);
wait2.until(ExpectedConditions.elementToBeClickable(By.id("navigationPageButton")));



5. Element is present but having temporary Overlay.



In this case induce ExplicitWait with ExpectedConditions set to invisibilityOfElementLocated for the Overlay to be invisible.


ExplicitWait


ExpectedConditions


invisibilityOfElementLocated


WebDriverWait wait3 = new WebDriverWait(driver, 10);
wait3.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("ele_to_inv")));



6. Element is present but having permanent Overlay.



Use JavascriptExecutor to send the click directly on the element.


JavascriptExecutor


WebElement ele = driver.findElement(By.xpath("element_xpath"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", ele);





I really appreciate this explanation.
– zoram
Feb 14 at 11:35





To #6/#2 above: The .ExecuteScript method is now accessible from the web driver itself rather than the JavascriptExecutor. Thanks for the well written answer!
– TaylorTheDeveloper
May 15 at 20:25





In case you need to use it with Javascript



We can use arguments[0].click() to simulate click operation.


var element = element(by.linkText('webdriverjs'));
browser.executeScript("arguments[0].click()",element);





Works! I cannot imagine way it works, but otherwise it clicks on overlay layer (waiting of overlay closing by 'invisibilityOfElementLocated' takes about 30sec.).
– Fisk
Jun 1 at 10:48





You can try


WebElement navigationPageButton = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.id("navigationPageButton")));
navigationPageButton.click();





It is not help me.
– Maria
Jul 4 '17 at 18:53





Are you getting same error?
– fg78nc
Jul 4 '17 at 18:55





Yes: org.openqa.selenium.WebDriverException: Element is not clickable at point (36, 72). Other element would receive the click: <div tabindex="0" class="waiter-ui-lock"></div> Command duration or timeout: 70 milliseconds
– Maria
Jul 4 '17 at 18:57







try the following WebElement element = driver.findElement(By.id("navigationPageButton")); Actions actions = new Actions(driver); actions.moveToElement(element).click().perform();
– fg78nc
Jul 4 '17 at 18:59


WebElement element = driver.findElement(By.id("navigationPageButton")); Actions actions = new Actions(driver); actions.moveToElement(element).click().perform();





If i using Thread.Sleep then all work. But i using Wait all fail.
– Maria
Jul 4 '17 at 19:24



I ran into this error while trying to click some element (or its overlay, I didn't care), and the other answers didn't work for me. I fixed it by using the elementFromPoint DOM API to find the element that Selenium wanted me to click on instead:


elementFromPoint




element_i_care_about = something()
loc = element_i_care_about.location
element_to_click = driver.execute_script(
"return document.elementFromPoint(arguments[0], arguments[1]);",
loc['x'],
loc['y'])
element_to_click.click()



element_i_care_about = something()
loc = element_i_care_about.location
element_to_click = driver.execute_script(
"return document.elementFromPoint(arguments[0], arguments[1]);",
loc['x'],
loc['y'])
element_to_click.click()



Hope this helps someone!




Thank you for your interest in this question.
Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).


Would you like to answer one of these unanswered questions instead?

oT8HIIjtFHCAJJu,CTUY63uarvQ,VmnHu,CyKxArowrRQFQhhe3e9
xvMot83XkmEiZ YrLKn2W LM1,7usxYQ,KDkgkXMIRZfqFNY fvI9uqAT39E5iC2xLa 2ID,jMX 8

Popular posts from this blog

Visual Studio Code: How to configure includePath for better IntelliSense results

Spring cloud config client Could not locate PropertySource

Makefile test if variable is not empty