Selenium中的try catch块中的带有isDisplayed()方法的NoSuchElementException

时间:2018-06-23 16:03:01

标签: java selenium selenium-webdriver webdriver

我想检查阴性情况。 上面的boolean元素未显示,但我必须打印true和false,但没有显示此类元素异常 请帮忙。

try{

    boolean k= driver.findElement(By.xpath("xpath_of_element")).isDisplayed();
    if(!k==true)
    {
             System.out.println("true12"); 
    }

}catch (NoSuchElementException e) {
    System.out.println(e);
}

3 个答案:

答案 0 :(得分:1)

元素有两个不同的阶段,如下所示:

您看到的NoSuchElementException本质上表示该元素在Viewport内并且在所有可能的条件下 isDisplayed() 都不存在。 strong>方法将返回 false 。因此,要验证这两个条件,可以使用以下解决方案:

try{
    if(driver.findElement(By.xpath("xpath_of_the_desired_element")).isDisplayed())
        System.out.println("Element is present and displayed");
    else
        System.out.println("Element is present but not displayed"); 
}catch (NoSuchElementException e) {
    System.out.println("Element is not present, hence not displayed as well");
}

答案 1 :(得分:0)

在检查元素的显示状态之前,您应该使用下面的代码来验证给定的xpath是否存在至少一个或多个元素。

List<WebElement> targetElement =  driver.findElements(By.xpath("xpath_your_expected_element"));
    try {
        if(targetElement>=1) {
            if(targetElement.isDisplayed()) {
                System.out.println("Element is present");
            }
            else {
                System.out.println("Element is found, but hidden on the page");
            }
            else {
                System.out.println("Element not found on the page");
            }
        }catch (NoSuchElementException e) {
            System.out.println("Exception in finding the element:" + e.getMessage());
        }

答案 2 :(得分:0)

        if (driver.findElements(xpath_of_element).size() != 0) return true;
        return false;