首页 > 解决方案 > Selenium 错误:没有这样的元素:无法在 .isDisplayed() 方法上找到元素

问题描述

我在下面有一个 if 语句,这让我遇到了问题。如果在不同的下拉列表中进行了某些选择,则页面会显示第二个下拉列表和一个复选框。下面的代码在做出导致这两个元素显示的选择时按预期工作,但如果做出不使它们显示的选择,则不会。我得到了no such element: Unable to locate element错误。起初我认为无论哪种方式它都会返回真实,但问题是它崩溃了,因为。我什至在尝试将值分配给布尔值时添加了一个检查,但仍然得到相同的错误。

boolean dropdown = driver.findElement(By.id("DROPDOWN")).isDisplayed();得到同样的错误。

      if(driver.findElement(By.id("DROPDOWN")).isDisplayed()){

                driver.findElement(By.id("DROPDOWN")).click();
                driver.findElement(By.xpath("Choice in Drop DOWN)).click();
                driver.findElement(By.id("CheckBox")).click();  
     }

标签: javaseleniumselenium-webdriver

解决方案


findElement 方法将抛出这个硬异常 - 如果找不到元素,则没有这样的元素。只需包括无此类元素的异常处理,您的逻辑就可以正常工作。

try{
if(driver.findElement(By.id("DROPDOWN")).isDisplayed()){

                driver.findElement(By.id("DROPDOWN")).click();
                driver.findElement(By.xpath("Choice in Drop DOWN)).click();
                driver.findElement(By.id("CheckBox")).click();  
     }
catch (NoSuchElementException e)
{
// I believe you dont have to do anything here. May be a console log will do.
}

推荐阅读