Back

Explore Courses Blog Tutorials Interview Questions
0 votes
2 views
in DevOps and Agile by (19.7k points)

I used explicit waits and I have the 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 use 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);

}

1 Answer

0 votes
by (62.9k points)

The error element isn't clickable at point (x, y) can arise from various 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 because it isn't within Viewport

  • Try to use JavascriptExecutor to bring the element inside the Viewport:

WebElement myelement = driver.findElement(By.id("navigati (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. element is present within 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("navigati 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);

If you are interested to learn Selenium on a much deeper level and want to become a professional in the testing domain, check out Intellipaat’s Selenium certification online

Welcome to Intellipaat Community. Get your technical queries answered by top developers!

30.4k questions

32.5k answers

500 comments

108k users

Browse Categories

...