0

I identified the applications element (locators), but when I run using webdriver, I receive the following error:

org.openqa.selenium.WebDriverException: Element is not clickable at point (784.3333129882812, 9.699996948242188). 
Other element would receive the click.

I am using java with eclipse. I have tried using different locators such as xpath and css, but with no luck. The app is written with angular.js.

3
  • can you give us the source code for the element you're trying to select? Or the code from the page once it's loaded?
    – Swagin9
    Jul 13, 2016 at 14:46
  • driver.findElement(By.xpath("//div[@id='body-holder']/div/div/div[2]/div[2]/div/article/div[4]/div[2]/div/span/a/span")).click();
    – Kenzie008
    Jul 14, 2016 at 9:22
  • Hi Kenzie008 - when you have extra information like this, you need to edit your question to include it there. The question is very difficult to read if the reader has to scan through the comments to understand everything about it. Aug 16, 2016 at 14:12

6 Answers 6

1

What this means is that you are grabbing the element before the page has fully loaded, and the DOM has changed since you grabbed the element. You need to add logic to wait for the page to load or for ajax requests to finish, and then grab the element by the locator and click on it.

1
  • That isn't the only thing that this could mean. It can also mean that another visible element is overlapping in front of all or part of the element you want to click, such as a lightbox or other form of overlay.
    – Julian
    Jul 12, 2016 at 16:22
1

While I love protractor as any easy functional testing stack for angular-front-end sites I'm not sure I'd point at the tools you're using first.

1) Verify it shows up somewhere on the page and that you can find it with your locator.

2) If it's not on the page immediately, add a wait condition for the element to be visible, etc. in your script. If it's on the page but out of view check #3. If it continues to fail with a wait condition you can try a wait for a specific amount of time instead of a condition (driver.sleep(integer) in JS)

3) If it's on the page but not in the visible portion (viewport) it may be there but need to be brought into view before it can be interacted with normally. Sometimes you can bring this element into view by clicking it twice, giving the element sendKeys('') with an empty string, etc. If that fails you may need to inject javascript into the browser to do your scrolling for your (ex driver.executeScript('some javascript code');

0

Look for a transparent overlay or lightbox. Even if the item allows clickthrough, chromedriver won't interact with an element if it's not the topmost layer.

0

In my mind, if it's angular and selenium, then the solution is protractor. Having said that have a look at this book if it helps.

5
0

first wait for the page to load by using driver.wait(until.elementLocated(By...))). may be click option is disabled to defy the automation. you can use sendKeys('webdriver', Key.ENTER);

-1

This is usually caused due to timing. I think the element is not visible when the code is executed for that element. So wait for a few seconds until the element appears

You can try sleep(2000)

or

Try using Javascript executor

JavaScriptExecutor executor = (JavascriptExecutor) driver;
executor.executeScript("arguments[0].click()", WebElement);
1

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.