0 votes
1 view
in DevOps and Agile by (19.8k 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 (63.4k 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 !


Categories

...