Selenium元素点击,ElementNotInteractableException

问题描述:

我想单击带有href的元素来删除FB组中的待定帖子,但是硒在第二个.click()后崩溃。使用相同的循环,我可以在没有任何问题的情况下向帖子添加帖子; “删除按钮”列表是有效的,因为当我尝试System.out.println("Delete link: " + delete.get(i).getLocation());我得到真正的位置。Selenium元素点击,ElementNotInteractableException

while (true){ 
     if (isloadComplete(driver) && driver.getTitle().contains("My Group")){ 
     List<WebElement> add = driver.findElements(By.xpath("//a[@data-tooltip-content='approve']")); 
     List<WebElement> delete = driver.findElements(By.xpath("//a[@data-tooltip-content='delete']")); 
     List<WebElement> articles = driver.findElements(By.xpath("//div[@role='article']")); 

     System.out.println("Add links: " + add.size()); 
     System.out.println("Delete links: " + delete.size()); 
     System.out.println("Articles: " + articles.size()); 

     for(int i = 0; i< articles.size(); i++){ 
      System.out.println("Delete link: " + delete.get(i).getLocation()); 
      if (articles.get(i).getText().toLowerCase().contains(".com") | articles.get(i).getText().toLowerCase().contains("http")){ 

       //System.out.println("Article: " + articles.get(i).getText()); 

        delete.get(i).click(); 
        WebElement element = (new WebDriverWait(driver, 10)).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@data-testid='delete_post_confirm_button']"))); 
         element.click(); 

        }else{ 
        add.get(i).click(); 
        } 

       } 
       break; 
      } 

异常线程 “main” org.openqa.selenium.ElementNotInteractableException: 生成信息:版本: '3.4.0',修订版: '未知',时间: '未知' 系统信息: host:'rostyslav-System-Product-Name',ip:'127.0.1.1',os.name:'Linux',os.arch:'amd64',os.version:'4.10.0-32-generic', java.version:'1.8.0_131' 驱动程序信息:org.openqa.selenium.firefox.FirefoxDriver 功能[{moz:profile =/tmp/rust_mozprofile.6twl2JYTeRMH,rotate = false,timeouts = {implicit = 0.0,pageLoad = 300000.0,script = 30000.0},pageLoadStrategy = normal,platform = ANY,specificationLevel = 0.0,moz:accessibilityChecks = false,acce ptInsecureCerts = false,browserVersion = 55.0.2,platformVersion = 4.10.0-32-generic,moz:processID = 26485.0,browserName = firefox,javascriptEnabled = true,platformName = linux}] 会话ID:562a62e4-3aaf-45e3-b7f2 -46f741f798a3 在sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法) 在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在java的.lang.reflect.Constructor.newInstance(Constructor.java:423) 在org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:150) 在org.openqa.selenium.remote.http.W3CHttpResponseCodec .decode(W3CHttpResponseCodec.java:115) 在org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:45) 在org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:164) 在org.openqa.selenium。 remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82) at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:637) at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement。 (Main.java:36)处的Main $ HelloRunnable.run(Main.java:67) 处的org.openqa.selenium.remote.RemoteWebElement.click(RemoteWebElement.java:82) (java:272)

+0

哪条线在上面的代码导致该异常? 'delete.get(ⅰ)。单击();'? –

+0

@SergeyKorol yes –

在实际拨打click之前,您应该等待elementToBeClickable。刚调以下行了一点,你做了之后以同样的方式(通过WebDriverWait):

delete.get(i).click(); 
+0

这没有帮助,我得到超时,在下一个WebDriverWait正在寻找“确认”按钮,但没有人,cuz .click()没有工作。我只是用try-catch跳过它,之后,我删除页面上的所有帖子,刷新页面和取消删除的帖子得到删除...我曾经设置超时到30秒,仍然没有帮助) –

+0

@LittleFox你可以更新你的文章与最新的代码和确切的线你在哪里得到错误? Stacktrace也将不胜感激。 –