当前位置: 首页 > 知识库问答 >
问题:

元素上的Selenium单击,ElementNotInteractableException

韩征
2023-03-14

我想点击element with href删除FB组中的挂起的帖子,但是selenium在第二个.click()之后崩溃。使用相同的循环,我可以添加帖子到组没有任何问题;“Delete Button”列表是有效的,因为当我尝试system.out.println(“delete link:”+delete.get(I).getLocation());时,我会得到真实的位置。

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',修订:'unknown',时间:'unknown'System信息: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'驱动程序信息0,PageLoad=300000.0,Script=30000.0},PageLoadStrategy=Normal,Platform=Any,SpecificationLevel=0.0,Moz:AccessibilityChecks=False,AcceptinSecureCerts=False,BrowserVersion=55.0.2,PlatformVersion=4.10.0-32-Generic,Moz:ProcessSid=26485.0,BrowserName=Firefox,JavaScriptEnabled=True,PlatformName=Linux}]会话html" target="_blank">方法)在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.w3chttpPresponsecodec.createException(W3chttpPresponsecodeC.java:150)在在org.openqa.selenium.remote.httpcommandexecutor.execute(httpcommandexecutor.java:164)在org.openqa.selenium.remote.remoteWebdriver.execute(drivercommandexecutor.java:82)在org.openqa.selenium.remote.remoteWebdriver.execute(remoteWebdriver.java:637)在

共有1个答案

齐文栋
2023-03-14

在实际的单击调用之前,应该等待ElementTobeclickable。只需稍微调整一下下面的行,就像您在后面(通过WebDriverWait)所做的那样:

delete.get(i).click();
 类似资料:
  • 问题内容: 我正在尝试自动执行Google云端硬盘中的上传文件功能。 用于传递参数的元素以高度-0px隐藏。 用户操作均不会使该元素可见。因此,我需要一种变通方法来在不可见的元素上单击。 上述元素的xpath是- 我在用 例外- 元素当前不可见,因此可能无法与之交互。 我尝试使用JavascriptExecutor。但是找不到确切的语法。 问题答案: 试试这个: 上面的那堆将改变文件输入控件的可见

  • 问题内容: 嗨,我想知道如何使用Selenium WebDriver单击隐藏元素和/或禁用元素。 我知道使用selenium1可以执行以下操作: 这将起作用,但是对于selenium2(WebDriver),则不起作用。我不想使用jquery来启用或显示隐藏字段或JavaScript。这是因为大多数测试都使用xpath。 还是我只需要保留旧的selenium,就可以单击隐藏的字段? 问题答案: 使

  • 我试图使用Selenium来单击::after伪元素。我意识到这无法通过WebDriver直接实现,但似乎无法找到一种使用Javascript实现的方法。 下面是DOM的外观: 上面的元素是这样的。对象的左边是按钮元素,后面的:元素是右边,箭头在单击时会下拉框。正如你所看到的,右边没有任何标识符,这就是为什么很难做到这一点的部分原因。 我在stackoverflow中看到了这两个链接,并试图将答案

  • 我正试图点击一个硒元素。它是一个复选框,包含以下HTML代码: 包含复选框和术语的段落代码: 我尝试过三种不同的方法,但都不奏效: 请帮助解决其他问题。

  • 我们已经更新到最新的Selenium版本3.141.59并且发现点击不起作用。我没有得到一个错误消息,表明单击失败,并移动到下一个函数或行。我已经验证了它在Chrome、Firefox和Edge上不起作用。我们的代码是用Java编写的。 在单击元素之前添加等待时间 操作 JavaScriptExecutor 如有任何帮助,我们将不胜感激!

  • 我试图刮掉一个页面,但我有时无法点击链接/按钮。 当网页加载时,那么loadingWhiteBox会先出现,然后在几秒钟后消失(但它会保留在超文本标记语言代码中),只要该框出现在网站上,我就不能点击链接并获得以下内容错误消息: 有什么办法解决这个问题吗?我已经尝试使用以下命令: 但即使元素不处于活动状态,它也存在。