SELENIUM-ChromeDriver error with CLICK Button

392 Views Asked by At

I have a problem with the "click button" with the Selenium driver.

I have tried all solutions in my head, but they do not work:

WebDriver driver = new ChromeDriver();
driver.get("https://demoqa.com/text-box");
driver.findElement(By.id("userName")).sendKeys("Daniel");
driver.findElement(By.id("userEmail")).sendKeys("[email protected]");
driver.findElement(By.id("currentAddress")).sendKeys("Italia");
driver.findElement(By.id("permanentAddress")).sendKeys("Italia");

//I've tried them all
//driver.findElement(By.xpath("//button[@id='submit']")).click();
//driver.findElement(By.cssSelector("#submit")).click();
driver.findElement(By.id("userName")).click();
//driver.findElement(By.id("userName")).submit();
//driver.findElement(By.linkText("Submit")).click();

The error is:

Exception in thread "main" org.openqa.selenium.ElementClickInterceptedException: element click intercepted: Element <button id="submit" type="button" class="btn btn-primary">...</button> is not clickable at point (728, 631). Other element would receive the click: <div>...</div>
  (Session info: chrome=112.0.5615.50)
Build info: version: '4.8.3', revision: 'b19b418e60'
System info: os.name: 'Windows 11', os.arch: 'amd64', os.version: '10.0', java.version: '19.0.2'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Command: [XXXXXXXXXXXXXX, clickElement {id=XXXXXXXXXXXX}]
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 112.0.5615.50, chrome: {chromedriverVersion: 112.0.5615.49 (XXXXXXXX..., userDataDir: C:\Users\XXXXXXX\AppData\Loca...}, goog:chromeOptions: {debuggerAddress: localhost:XXXXX}, networkConnectionEnabled: false, pageLoadStrategy: normal, platformName: WINDOWS, proxy: Proxy(), se:cdp: ws://localhost:XXXXX/devtoo..., se:cdpVersion: XXXXXXXX, setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: XXXXXXX, script: XXXXXX}, unhandledPromptBehavior: dismiss and notify, webauthn:extension:credBlob: true, webauthn:extension:largeBlob: true, webauthn:extension:minPinLength: true, webauthn:extension:prf: true, webauthn:virtualAuthenticators: true}
Element: [[ChromeDriver: chrome on WINDOWS (XXXXXXXXXXXXXXXXXx)] -> xpath: //button[@id='submit']]
Session ID: XXXXXXXXXXXXX
    at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:67)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:484)
    at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:200)
    at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:133)
    at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:53)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:193)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.invokeExecute(DriverCommandExecutor.java:183)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:158)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
    at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:257)
    at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:78)
    at selenium.fondamenti.Gestione_e_Convalida_TextBox.main(Gestione_e_Convalida_TextBox.java:44)

I expected it to work.

3

There are 3 best solutions below

1
TamTam On

The error message is trying to tell you that there is another element is covering the submit button and it is interupting that click event for the submit button.

Try using javascript executer:

import org.openqa.selenium.JavascriptExecutor;

JavascriptExecutor executer = (JavascriptExecutor) driver;
WebElement submitButton = driver.findElement(By.xpath("//button[@id='submit']"))
executer.executeScript("arguments[0].click", submitButton);
1
JeffC On

My guess is that since you haven't maximized the browser the "Submit" button is actually under the footer or side panel. The code below is working.

WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get("https://demoqa.com/text-box");
driver.findElement(By.id("userName")).sendKeys("Daniel");
driver.findElement(By.id("userEmail")).sendKeys("[email protected]");
driver.findElement(By.id("currentAddress")).sendKeys("Italia");
driver.findElement(By.id("permanentAddress")).sendKeys("Italia");
driver.findElement(By.id("submit")).click();

driver.quit();
0
Daniele On

It only works if I scroll down the page, so that I see the button (I maximized the window but it doesn't go down).

RESOLVED:

JavascriptExecutor js = (JavascriptExecutor) driver;
WebElement bottone_submit = driver.findElement(By.id("submit"));
//This will scroll the page till the element is found       
js.executeScript("arguments[0].scrollIntoView();", bottone_submit);