Selenium: "is not clickable at point" how to wait till all scripts were loaded

selenium nutrition
what is selenium used for
selenium in food
selenium supplement
selenium vitamin
selenium deficiency
selenium webdriver
too much selenium

I have 3 waits:

wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@id='pagecontrols']/input[1]")));
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//*[@id='pagecontrols']/input[1]")));
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='pagecontrols']/input[1]")));

For the same element, but after waits, when I want to click

driver.findElement(By.xpath("//*[@id='pagecontrols']/input[1]")).click();

I have :

"Element (...) is not clickable at point"

I was trying to wait for JavaScript to loaded completly, by adding this part

public void waitForLoad(WebDriver driver) 
{
  ExpectedCondition<Boolean> pageLoadCondition = new ExpectedCondition<Boolean>() 
  {
    public Boolean apply(WebDriver driver) 
    {  
      return ((JavascriptExecutor)driver).executeScript("return document.readyState").equals("complete");
    }
  };
  WebDriverWait wait = new WebDriverWait(driver, 30);
  wait.until(pageLoadCondition);
}

However this is not working (this help in different place, so generally this helping in some cases), maybe I'm doing something wrong? I think I should wait for jQuery too, but honestly I do know how (I've found some solutions for that, but they didn't worked for me)

Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: Element <input type="button" class="btn btn-default" data-toggle="modal" data-target="#adduser" data-localize="adduser" value="Add user"> is not clickable at point (1397, 97). Other element would receive the click: <div class="blockUI blockOverlay" style="z-index: 1000; border: none; margin: 0px; padding: 0px; width: 100%; height: 100%; top: 0px; left: 0px; background-color: rgb(0, 0, 0); cursor: wait; position: absolute; opacity: 0.304712;"></div>
  (Session info: chrome=55.0.2883.87)
  (Driver info: chromedriver=2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform=Windows NT 6.1.7601 SP1 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 149 milliseconds
Build info: version: 'unknown', revision: '1969d75', time: '2016-10-18 09:43:45 -0700'
System info: host: 'BTIS1000062581', ip: 'x.x.x.x', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_20'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9), userDataDir=C:\Users\user\AppData\Local\Temp\scoped_dir7068_2467}, takesHeapSnapshot=true, pageLoadStrategy=normal, databaseEnabled=false, handlesAlerts=true, hasTouchScreen=false, version=55.0.2883.87, platform=XP, browserConnectionEnabled=false, nativeEvents=true, acceptSslCerts=true, locationContextEnabled=true, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true, unexpectedAlertBehaviour=}]
Session ID: e9c9bf2150b10d2865e7a117c1c9e739
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:216)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:168)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:635)
    at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:274)
    at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:84)
    at automationFramework.FirstTestCase.main(FirstTestCase.java:201)

One more thing: When I add Thread.sleep(500); before clicking element it is working, but I want to get rid of those sleeps

The only real and effective way to avoid this "smoke" UI blocker is using Thread.sleep(); 3000 millis and voila!

7 Science-Based Health Benefits of Selenium, Selenium WebDriver 3 Practical Guide: End-to-end Automation Testing for Web and Mobile Browsers with Selenium WebDriver, 2nd Edition KensaQ updates its results daily to help you find what you are looking for. Search Now! Find online selenium training on KensaQ.com.

You should wait until element that intercepts click disappeared:

new WebDriverWait(driver, 10).until(ExpectedConditions.invisibilityOfElementLocated(By.xpath('//div[@class="blockUI blockOverlay"]')));
driver.findElement(By.xpath("//input[@value='Add user']")).click();

Selenium: Uses, Side Effects, Interactions, Dosage, and Warning, Learn Selenium in 1 Day: Definitive Guide to Learn Selenium for Beginners Find Selenium Learn. Get Useful Information In Seconds. Visit Today & Quickly Get More Results On Fastquicksearch.com

I believe that adding a wait for page load should work fine here:

driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);

Selenium: Health benefits, sources, and potential risks, Test Automation Using Selenium WebDriver with Java: Step by Step Guide Amazing Low Prices On High Quality Puritan’s Pride® Vitamins, Supplements & More. Buy Now & Get Free Shipping On Your Order Of $25 Or More.

you should expect the block-ui to disappear before the click action or any other action. something for example:

public void aguardaBlockUi(){
        WebElement elementBlock = (findElement(By.xpath("//div[@class='blockUI blockOverlay']")));

        WebDriverWait wait = new WebDriverWait( driver, 180 );
        wait.until(ExpectedConditions.invisibilityOf(elementBlock ));   
    }

Selenium: Benefits, Uses, Side Effects, Dosage, and More, Summary Selenium is a powerful antioxidant that fights oxidative stress and helps defend your body from chronic conditions, such as heart  Selenium is a mineral found in the soil. Selenium naturally appears in water and some foods. While people only need a very small amount, selenium plays a key role in the metabolism. Why do people

Selenium, Selenium is an essential mineral that supports the immune system, fertility, and cognitive function. It may also prevent some forms of cancer and thyroid  Selenium is mineral that is found in soil and occurs naturally in certain foods (such as whole grains, Brazil nuts, sunflower seeds, and seafood). Selenium is not produced in the body, but it is needed for proper thyroid and immune system function. Selenium is used to treat or prevent selenium deficiency.

Selenium with Python, Selenium is a trace element that is essential in small amounts, but like all essential elements, selenium can be toxic at high levels. Unlike plants, most animals  Selenium is a mineral found in soil, water, and some foods. It is important for making many body processes work correctly. Most of the selenium in the body comes from the diet. The amount of

Selenium | Linus Pauling Institute, Selenium was discovered as an element in 1817 by the Swedish chemist Jöns Jacob Berzelius, who determined the atomic weights of many  Selenium, which is nutritionally essential for humans, is a constituent of more than two dozen selenoproteins that play critical roles in reproduction, thyroid hormone metabolism, DNA synthesis, and protection from oxidative damage and infection [ 1 ].

Comments
  • Paste entire exception you get here.
  • That can happen if the element you want to click is obstructed by another element. Could you post a sample of the web page you're testing?
  • This page is accessable only in my network
  • images84.fotosik.pl/311/766aa577c599eb26.png
  • It's working - but it is taking a lot of time. Honestly I don't know What is happening, it should check this element "//div[@class='blockUI blockOverlay']" every 500ms, max 10 times, but for me it takes longer than 5s
  • @Krzysztof then change new WebDriverWait(driver, 10) to new WebDriverWait(driver, 5)
  • still the same - I was trying to change it, without results System.out.println("before waiting "+System.currentTimeMillis()); new WebDriverWait(driver, 5).until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("//div[@class='blockUI blockOverlay']"))); System.out.println("after waiting "+System.currentTimeMillis()); before waiting 1485261322976 after waiting 1485261335940 so 13s
  • I'm using this, but without results