点击按钮出现 SELENIUM-ChromeDriver 错误

问题描述 投票:0回答:3

我对 Selenium 驱动程序的“单击按钮”有问题。

我已经在脑海中尝试了所有的解决方案,但没有用:

 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();

错误是:

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)

我希望它能工作

selenium-webdriver xpath selenium-chromedriver buttonclick
3个回答
0
投票

错误消息试图告诉您有另一个元素覆盖了提交按钮,它正在中断提交按钮的点击事件。

尝试使用javascript执行器:

import org.openqa.selenium.JavascriptExecutor;

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

0
投票

我的猜测是,由于您没有最大化浏览器,“提交”按钮实际上位于页脚或侧面板下方。下面的代码正在运行。

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
投票

仅当我向下滚动页面时它才有效,以便我看到按钮(我最大化了窗口但它没有下降)。

已解决:

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);
© www.soinside.com 2019 - 2024. All rights reserved.