Java Selenium:无法单击在使用find元素时找到的按钮,该按钮通过JS和简单格式化方式都失败

Java Selenium:无法单击在使用find元素时找到的按钮,该按钮通过JS和简单格式化方式都失败,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,我曾尝试单击一个按钮,该按钮的id、CSS和XPath可以通过findElement获得,但单击后不会执行该操作。 下面是示例代码,并且遵循异常 WebElement PageSpeedTestbutton1 = driver.findElement(By.cssSelector("#files")); System.out.println("Found"); WebElement PageSpeedTestbutton2 = dri

我曾尝试单击一个按钮,该按钮的id、CSS和XPath可以通过findElement获得,但单击后不会执行该操作。 下面是示例代码,并且遵循异常

  WebElement PageSpeedTestbutton1 = driver.findElement(By.cssSelector("#files")); 
            System.out.println("Found");    
            WebElement PageSpeedTestbutton2 = driver.findElement(By.xpath("//input[@id='files']"));
            System.out.println("Found");    
            PageSpeedTestbutton1.click();
            PageSpeedTestbutton2.click();
            System.out.println("Clicked Checker");



Results:
Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: Element is not clickable at point (-451, 258)
  (Session info: chrome=73.0.3683.103)
  (Driver info: chromedriver=2.46.628402 (536cd7adbad73a3783fdc2cab92ab2ba7ec361e1),platform=Windows NT 10.0.17134 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:25:48'
System info: host: 'RAUNAK-MA', ip: '192.168.2.200', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_201'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, acceptSslCerts: false, applicationCacheEnabled: false, browserConnectionEnabled: false, browserName: chrome, chrome: {chromedriverVersion: 2.46.628402 (536cd7adbad73a..., userDataDir: C:\Users\RAUNAK~1.MAS\AppDa...}, cssSelectorsEnabled: true, databaseEnabled: false, goog:chromeOptions: {debuggerAddress: localhost:64017}, handlesAlerts: true, hasTouchScreen: false, javascriptEnabled: true, locationContextEnabled: true, mobileEmulationEnabled: false, nativeEvents: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: XP, platformName: XP, proxy: Proxy(), rotatable: false, setWindowRect: true, strictFileInteractability: false, takesHeapSnapshot: true, takesScreenshot: true, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unexpectedAlertBehaviour: ignore, unhandledPromptBehavior: ignore, version: 73.0.3683.103, webStorageEnabled: true}
Session ID: da5b790c67ddae03940ff612653dfbb7
    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:214)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
    at org.openqa.selenium.remote.http.JsonHttpResponseCodec.reconstructValue(JsonHttpResponseCodec.java:40)
    at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:80)
    at org.openqa.selenium.remote.http.AbstractHttpResponseCodec.decode(AbstractHttpResponseCodec.java:44)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
    at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:285)
    at org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:84)
    at newpackage1.newTest.main(newTest.java:87)

以下错误表明您的元素可用,但不可单击

Exception in thread "main" org.openqa.selenium.WebDriverException: unknown error: Element is not clickable at point 
尝试下面的代码,它应该可以工作

WebElement PageSpeedTestbutton1 = driver.findElement(By.cssSelector("#files")); 

Actions action = new Actions(driver);
action.moveToElement(PageSpeedTestbutton1).click().build().perform();

已编辑

List<WebElement> PageSpeedTestbuttons = driver.findElements(By.cssSelector("#files"));
        if (PageSpeedTestbuttons.size()>0)
        {
            WebElement PageSpeedTestbutton1 =PageSpeedTestbuttons.get(0); 
            Actions action = new Actions(driver);
            action.moveToElement(PageSpeedTestbutton1).click().build().perform();
        }
        else
        {
            System.out.println("Element is not available");
        }
List PageSpeedTestbuttons=driver.findElements(By.cssSelector(“#文件”);
如果(PageSpeedTestbuttons.size()>0)
{
WebElement PageSpeedTestbutton1=PageSpeedTestbuttons.get(0);
动作动作=新动作(驱动);
action.moveToElement(PageSpeedTestbutton1)。单击().build().perform();
}
其他的
{
System.out.println(“元素不可用”);
}

目前,当我将Actions脚本和JS Executor脚本放在一起时,如果其中一个脚本丢失,它就会工作,但不工作。我不知道它为什么会表现得很奇怪。在这种情况下,您需要共享您的链接以了解到底。或者,如果元素的长度计数不为零,则首先获取该元素的长度计数,如果不传递消息元素不可用,则执行上述操作。@User008:尝试编辑的选项。类型列表不是泛型的;不能使用参数对其进行参数化
List<WebElement> PageSpeedTestbuttons = driver.findElements(By.cssSelector("#files"));
        if (PageSpeedTestbuttons.size()>0)
        {
            WebElement PageSpeedTestbutton1 =PageSpeedTestbuttons.get(0); 
            Actions action = new Actions(driver);
            action.moveToElement(PageSpeedTestbutton1).click().build().perform();
        }
        else
        {
            System.out.println("Element is not available");
        }