By Maria


2017-07-04 18:26:14 8 Comments

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.

@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);
}

3 comments

@Rester Test 2018-04-13 09:25:04

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);

@Fisk 2018-06-01 10:48:02

Works! I cannot imagine way it works, but otherwise it clicks on overlay layer (waiting of overlay closing by 'invisibilityOfElementLocated' takes about 30sec.).

@DebanjanB 2017-07-05 03:16:31

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 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).

Solution

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:

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

Try to use Actions Class:

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:

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.

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 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.

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.

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

@zoram 2018-02-14 11:35:58

I really appreciate this explanation.

@TaylorTheDeveloper 2018-05-15 20:25:28

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!

@fg78nc 2017-07-04 18:39:25

You can try

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

@Maria 2017-07-04 18:53:01

It is not help me.

@fg78nc 2017-07-04 18:55:09

Are you getting same error?

@Maria 2017-07-04 18:57:16

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

@fg78nc 2017-07-04 18:59:33

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

@Maria 2017-07-04 19:03:50

It is not help too. I have two Exception and one AssertionError and next some error "Element is not clickable at point "

@fg78nc 2017-07-04 19:04:42

Are you sure page is not refreshing at the time you are trying to click?

@Maria 2017-07-04 19:09:44

A pop-up menu appears on the page but the page itself is not updated

@fg78nc 2017-07-04 19:22:38

Maybe you now operate on pop-up window instead?

@Maria 2017-07-04 19:24:32

If i using Thread.Sleep then all work. But i using Wait all fail.

@try-catch-finally 2017-07-04 20:12:05

presenceOfElementLocated() is not enough, the element has been located. The error message would be different if the element cannot be located. The error says the element is not visible or something overlays that element.

@pburgr 2018-05-30 14:16:08

I have the same problem, after a modal dialog is opened, I'm not able to click element inside the dialog. Have already tried all suggestions from this thread, nothing worked. I can identify the overlaying frame, but cannot switch to the frame, getting NoSuchFrameException.

@fg78nc 2018-05-30 22:42:34

@pburgr How do you switch to the frame?

@pburgr 2018-05-31 07:04:13

with this I'm getting NoSuchFrameException: WebElement languageModal = driver.findElement(By.id("languageModal")); driver.switchTo().frame(languageModal); but WebElement languageModal = driver.findElement(By.id("languageModal")); languageModal.click(); is OK, no exception at all.

@fg78nc 2018-05-31 13:22:27

@pburgr Are you able to locate frame through id in browser console?

Related Questions

Sponsored Content

41 Answered Questions

[SOLVED] Debugging "Element is not clickable at point" error

3 Answered Questions

[SOLVED] Selenium Webdriver (Java) cannot click the AJAX button

3 Answered Questions

2 Answered Questions

[SOLVED] Unable to find element

0 Answered Questions

1 Answered Questions

1 Answered Questions

3 Answered Questions

[SOLVED] Element is not clickable at point using chrome driver

Sponsored Content