I am using selenium for test script. I am getting following error and this error randomly occur. When I run 10 times, I get this about twice. So it\'s not really reproducibl
I have solved by catching the exception and managing it like this:
WebDriver driver = new ChromeDriver();
WebElement element = driver.findElement(By.id("ID"));
boolean clicked = false;
do{
try {
element.click();
} catch (WebDriverException e) {
continue;
} finally {
clicked = true;
}
} while (!clicked);
There are a number of steps you can do in order to improve the stability while clicking on different UI elements:
Does it helped the stability?
WebDriverWait wait = new WebDriverWait(driver, 3)
JavascriptExecutor js = ((JavascriptExecutor) driver)
//presence in DOM
wait.until(ExpectedConditions.presenceOfElement(By.id("ID")));
//scrolling
WebElement element = driver.findElement(By.id("ID")));
js.executeScript("arguments[0].scrollIntoView(true);", element);
//clickable
wait.until(ExpectedConditions.elementToBeClickable(By.id("ID")));
Further, if you will decide to override the default Actions interface with more customized one, you can use two type of clicks (for example): click()
which will have all those stability steps and fastClick()
which will be the default clicking without any varification.
click parent element of the element which you want to click. this can be workaround solution only.
for best solution , use java script to focus element Using ----> JavascriptExecutor jsnew=(JavascriptExecutor) driver; WebElement element=driver.findElement(By.xpath("")); jsnew.executeScript("arguments[0].scrollIntoView({block:\"center\"});", element);
In place of xpath you can use id , css selector : This scrollIntoView will bring the this specific element in middle of page , themn driver wil be able to hit element.
if it is normal button or link , use jsnew.executeScript("arguments[0].click();",element);
This is consistent solution for click.
I was also facing same problem with Chrome. I have solved that putting one line of code before clicking on the element:
scrollToViewElement(driver,xpath);
I got the same issue due to one of spinner was hiding the element.
I gave xpath and it resolved the issue. Other people suggested to 1. scroll 2. sleep also worked for them.