Selenium Web Driver & Java. Element is not clickable at point (x, y). Other element would receive the...
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);
}
java selenium selenium-webdriver webdriver
|
show 1 more comment
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);
}
java selenium selenium-webdriver webdriver
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 usingelementToBeClickable()
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
|
show 1 more comment
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);
}
java selenium selenium-webdriver webdriver
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);
}
java selenium selenium-webdriver webdriver
java selenium selenium-webdriver webdriver
edited Nov 19 '18 at 7:37
Bruno Bieri
4,38253963
4,38253963
asked Jul 4 '17 at 18:26
MariaMaria
192127
192127
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 usingelementToBeClickable()
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
|
show 1 more comment
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 usingelementToBeClickable()
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
Are you using Chrome version 61+?
– demouser123
Jul 4 '17 at 18:28
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
@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
@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
@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
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
|
show 1 more comment
5 Answers
5
active
oldest
votes
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);
1
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 '18 at 20:25
3
You have covered many possibilities in which only 5 and 6 are correct way to handle the mentioned error. The first four throws different error for which the solution you gave won't work. For an example point number 3 is actually a stale element problem that wouldn't work even though how long you wait with elementToBeClickble method. That has to be handled differently.
– Rajagopalan
Aug 7 '18 at 7:59
add a comment |
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 '18 at 10:48
thanks man, you saved my time.
– Chaudhry Waqas
Oct 22 '18 at 19:36
add a comment |
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
1
try the followingWebElement element = driver.findElement(By.id("navigationPageButton")); Actions actions = new Actions(driver); actions.moveToElement(element).click().perform();
– fg78nc
Jul 4 '17 at 18:59
1
If i using Thread.Sleep then all work. But i using Wait all fail.
– Maria
Jul 4 '17 at 19:24
|
show 9 more comments
Scrolling the page to the near by point mentioned in the exception did the trick for me. Below is code snippet:
$wd_host = 'http://localhost:4444/wd/hub';
$capabilities =
[
WebDriverCapabilityType::BROWSER_NAME => 'chrome',
WebDriverCapabilityType::PROXY => [
'proxyType' => 'manual',
'httpProxy' => PROXY_DOMAIN.':'.PROXY_PORT,
'sslProxy' => PROXY_DOMAIN.':'.PROXY_PORT,
'noProxy' => PROXY_EXCEPTION // to run locally
],
];
$webDriver = RemoteWebDriver::create($wd_host, $capabilities, 250000, 250000);
...........
...........
// Wait for 3 seconds
$webDriver->wait(3);
// Scrolls the page vertically by 70 pixels
$webDriver->executeScript("window.scrollTo(0, 70);");
NOTE: I use Facebook php webdriver
add a comment |
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:
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()
I've also had situations where an element was moving, for example because an element above it on the page was doing an animated expand or collapse. In that case, this Expected Condition class helped. You give it the elements that are animated, not the ones you want to click. This version only works for jQuery animations.
class elements_not_to_be_animated(object):
def __init__(self, locator):
self.locator = locator
def __call__(self, driver):
try:
elements = EC._find_elements(driver, self.locator)
# :animated is an artificial jQuery selector for things that are
# currently animated by jQuery.
return driver.execute_script(
'return !jQuery(arguments[0]).filter(":animated").length;',
elements)
except StaleElementReferenceException:
return False
add a comment |
5 Answers
5
active
oldest
votes
5 Answers
5
active
oldest
votes
active
oldest
votes
active
oldest
votes
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);
1
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 '18 at 20:25
3
You have covered many possibilities in which only 5 and 6 are correct way to handle the mentioned error. The first four throws different error for which the solution you gave won't work. For an example point number 3 is actually a stale element problem that wouldn't work even though how long you wait with elementToBeClickble method. That has to be handled differently.
– Rajagopalan
Aug 7 '18 at 7:59
add a comment |
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);
1
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 '18 at 20:25
3
You have covered many possibilities in which only 5 and 6 are correct way to handle the mentioned error. The first four throws different error for which the solution you gave won't work. For an example point number 3 is actually a stale element problem that wouldn't work even though how long you wait with elementToBeClickble method. That has to be handled differently.
– Rajagopalan
Aug 7 '18 at 7:59
add a comment |
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);
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);
edited Jan 14 at 4:24
answered Jul 5 '17 at 3:16
DebanjanBDebanjanB
41k73878
41k73878
1
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 '18 at 20:25
3
You have covered many possibilities in which only 5 and 6 are correct way to handle the mentioned error. The first four throws different error for which the solution you gave won't work. For an example point number 3 is actually a stale element problem that wouldn't work even though how long you wait with elementToBeClickble method. That has to be handled differently.
– Rajagopalan
Aug 7 '18 at 7:59
add a comment |
1
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 '18 at 20:25
3
You have covered many possibilities in which only 5 and 6 are correct way to handle the mentioned error. The first four throws different error for which the solution you gave won't work. For an example point number 3 is actually a stale element problem that wouldn't work even though how long you wait with elementToBeClickble method. That has to be handled differently.
– Rajagopalan
Aug 7 '18 at 7:59
1
1
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 '18 at 20:25
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 '18 at 20:25
3
3
You have covered many possibilities in which only 5 and 6 are correct way to handle the mentioned error. The first four throws different error for which the solution you gave won't work. For an example point number 3 is actually a stale element problem that wouldn't work even though how long you wait with elementToBeClickble method. That has to be handled differently.
– Rajagopalan
Aug 7 '18 at 7:59
You have covered many possibilities in which only 5 and 6 are correct way to handle the mentioned error. The first four throws different error for which the solution you gave won't work. For an example point number 3 is actually a stale element problem that wouldn't work even though how long you wait with elementToBeClickble method. That has to be handled differently.
– Rajagopalan
Aug 7 '18 at 7:59
add a comment |
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 '18 at 10:48
thanks man, you saved my time.
– Chaudhry Waqas
Oct 22 '18 at 19:36
add a comment |
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 '18 at 10:48
thanks man, you saved my time.
– Chaudhry Waqas
Oct 22 '18 at 19:36
add a comment |
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);
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);
edited Apr 13 '18 at 10:20
SirPeople
2,094723
2,094723
answered Apr 13 '18 at 9:25
Rester TestRester Test
9116
9116
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 '18 at 10:48
thanks man, you saved my time.
– Chaudhry Waqas
Oct 22 '18 at 19:36
add a comment |
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 '18 at 10:48
thanks man, you saved my time.
– Chaudhry Waqas
Oct 22 '18 at 19:36
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 '18 at 10:48
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 '18 at 10:48
thanks man, you saved my time.
– Chaudhry Waqas
Oct 22 '18 at 19:36
thanks man, you saved my time.
– Chaudhry Waqas
Oct 22 '18 at 19:36
add a comment |
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
1
try the followingWebElement element = driver.findElement(By.id("navigationPageButton")); Actions actions = new Actions(driver); actions.moveToElement(element).click().perform();
– fg78nc
Jul 4 '17 at 18:59
1
If i using Thread.Sleep then all work. But i using Wait all fail.
– Maria
Jul 4 '17 at 19:24
|
show 9 more comments
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
1
try the followingWebElement element = driver.findElement(By.id("navigationPageButton")); Actions actions = new Actions(driver); actions.moveToElement(element).click().perform();
– fg78nc
Jul 4 '17 at 18:59
1
If i using Thread.Sleep then all work. But i using Wait all fail.
– Maria
Jul 4 '17 at 19:24
|
show 9 more comments
You can try
WebElement navigationPageButton = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.id("navigationPageButton")));
navigationPageButton.click();
You can try
WebElement navigationPageButton = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.id("navigationPageButton")));
navigationPageButton.click();
answered Jul 4 '17 at 18:39
fg78ncfg78nc
2,2771517
2,2771517
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
1
try the followingWebElement element = driver.findElement(By.id("navigationPageButton")); Actions actions = new Actions(driver); actions.moveToElement(element).click().perform();
– fg78nc
Jul 4 '17 at 18:59
1
If i using Thread.Sleep then all work. But i using Wait all fail.
– Maria
Jul 4 '17 at 19:24
|
show 9 more comments
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
1
try the followingWebElement element = driver.findElement(By.id("navigationPageButton")); Actions actions = new Actions(driver); actions.moveToElement(element).click().perform();
– fg78nc
Jul 4 '17 at 18:59
1
If i using Thread.Sleep then all work. But i using Wait all fail.
– Maria
Jul 4 '17 at 19:24
It is not help me.
– Maria
Jul 4 '17 at 18:53
It is not help me.
– Maria
Jul 4 '17 at 18:53
Are you getting same error?
– fg78nc
Jul 4 '17 at 18:55
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
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
1
1
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
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
1
1
If i using Thread.Sleep then all work. But i using Wait all fail.
– Maria
Jul 4 '17 at 19:24
If i using Thread.Sleep then all work. But i using Wait all fail.
– Maria
Jul 4 '17 at 19:24
|
show 9 more comments
Scrolling the page to the near by point mentioned in the exception did the trick for me. Below is code snippet:
$wd_host = 'http://localhost:4444/wd/hub';
$capabilities =
[
WebDriverCapabilityType::BROWSER_NAME => 'chrome',
WebDriverCapabilityType::PROXY => [
'proxyType' => 'manual',
'httpProxy' => PROXY_DOMAIN.':'.PROXY_PORT,
'sslProxy' => PROXY_DOMAIN.':'.PROXY_PORT,
'noProxy' => PROXY_EXCEPTION // to run locally
],
];
$webDriver = RemoteWebDriver::create($wd_host, $capabilities, 250000, 250000);
...........
...........
// Wait for 3 seconds
$webDriver->wait(3);
// Scrolls the page vertically by 70 pixels
$webDriver->executeScript("window.scrollTo(0, 70);");
NOTE: I use Facebook php webdriver
add a comment |
Scrolling the page to the near by point mentioned in the exception did the trick for me. Below is code snippet:
$wd_host = 'http://localhost:4444/wd/hub';
$capabilities =
[
WebDriverCapabilityType::BROWSER_NAME => 'chrome',
WebDriverCapabilityType::PROXY => [
'proxyType' => 'manual',
'httpProxy' => PROXY_DOMAIN.':'.PROXY_PORT,
'sslProxy' => PROXY_DOMAIN.':'.PROXY_PORT,
'noProxy' => PROXY_EXCEPTION // to run locally
],
];
$webDriver = RemoteWebDriver::create($wd_host, $capabilities, 250000, 250000);
...........
...........
// Wait for 3 seconds
$webDriver->wait(3);
// Scrolls the page vertically by 70 pixels
$webDriver->executeScript("window.scrollTo(0, 70);");
NOTE: I use Facebook php webdriver
add a comment |
Scrolling the page to the near by point mentioned in the exception did the trick for me. Below is code snippet:
$wd_host = 'http://localhost:4444/wd/hub';
$capabilities =
[
WebDriverCapabilityType::BROWSER_NAME => 'chrome',
WebDriverCapabilityType::PROXY => [
'proxyType' => 'manual',
'httpProxy' => PROXY_DOMAIN.':'.PROXY_PORT,
'sslProxy' => PROXY_DOMAIN.':'.PROXY_PORT,
'noProxy' => PROXY_EXCEPTION // to run locally
],
];
$webDriver = RemoteWebDriver::create($wd_host, $capabilities, 250000, 250000);
...........
...........
// Wait for 3 seconds
$webDriver->wait(3);
// Scrolls the page vertically by 70 pixels
$webDriver->executeScript("window.scrollTo(0, 70);");
NOTE: I use Facebook php webdriver
Scrolling the page to the near by point mentioned in the exception did the trick for me. Below is code snippet:
$wd_host = 'http://localhost:4444/wd/hub';
$capabilities =
[
WebDriverCapabilityType::BROWSER_NAME => 'chrome',
WebDriverCapabilityType::PROXY => [
'proxyType' => 'manual',
'httpProxy' => PROXY_DOMAIN.':'.PROXY_PORT,
'sslProxy' => PROXY_DOMAIN.':'.PROXY_PORT,
'noProxy' => PROXY_EXCEPTION // to run locally
],
];
$webDriver = RemoteWebDriver::create($wd_host, $capabilities, 250000, 250000);
...........
...........
// Wait for 3 seconds
$webDriver->wait(3);
// Scrolls the page vertically by 70 pixels
$webDriver->executeScript("window.scrollTo(0, 70);");
NOTE: I use Facebook php webdriver
answered Aug 1 '18 at 5:01
Sudheesh.M.SSudheesh.M.S
309310
309310
add a comment |
add a comment |
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:
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()
I've also had situations where an element was moving, for example because an element above it on the page was doing an animated expand or collapse. In that case, this Expected Condition class helped. You give it the elements that are animated, not the ones you want to click. This version only works for jQuery animations.
class elements_not_to_be_animated(object):
def __init__(self, locator):
self.locator = locator
def __call__(self, driver):
try:
elements = EC._find_elements(driver, self.locator)
# :animated is an artificial jQuery selector for things that are
# currently animated by jQuery.
return driver.execute_script(
'return !jQuery(arguments[0]).filter(":animated").length;',
elements)
except StaleElementReferenceException:
return False
add a comment |
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:
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()
I've also had situations where an element was moving, for example because an element above it on the page was doing an animated expand or collapse. In that case, this Expected Condition class helped. You give it the elements that are animated, not the ones you want to click. This version only works for jQuery animations.
class elements_not_to_be_animated(object):
def __init__(self, locator):
self.locator = locator
def __call__(self, driver):
try:
elements = EC._find_elements(driver, self.locator)
# :animated is an artificial jQuery selector for things that are
# currently animated by jQuery.
return driver.execute_script(
'return !jQuery(arguments[0]).filter(":animated").length;',
elements)
except StaleElementReferenceException:
return False
add a comment |
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:
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()
I've also had situations where an element was moving, for example because an element above it on the page was doing an animated expand or collapse. In that case, this Expected Condition class helped. You give it the elements that are animated, not the ones you want to click. This version only works for jQuery animations.
class elements_not_to_be_animated(object):
def __init__(self, locator):
self.locator = locator
def __call__(self, driver):
try:
elements = EC._find_elements(driver, self.locator)
# :animated is an artificial jQuery selector for things that are
# currently animated by jQuery.
return driver.execute_script(
'return !jQuery(arguments[0]).filter(":animated").length;',
elements)
except StaleElementReferenceException:
return False
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:
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()
I've also had situations where an element was moving, for example because an element above it on the page was doing an animated expand or collapse. In that case, this Expected Condition class helped. You give it the elements that are animated, not the ones you want to click. This version only works for jQuery animations.
class elements_not_to_be_animated(object):
def __init__(self, locator):
self.locator = locator
def __call__(self, driver):
try:
elements = EC._find_elements(driver, self.locator)
# :animated is an artificial jQuery selector for things that are
# currently animated by jQuery.
return driver.execute_script(
'return !jQuery(arguments[0]).filter(":animated").length;',
elements)
except StaleElementReferenceException:
return False
edited Sep 7 '18 at 13:44
answered Jul 3 '18 at 22:09
rescdskrescdsk
7,03332728
7,03332728
add a comment |
add a comment |
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 usingelementToBeClickable()
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