在webdriver中的页面中找不到webElement时,NoSuchElement异常未到来

时间:2012-08-26 18:45:55

标签: java webdriver selenium-webdriver

在webdriver

页面中找不到webElement时,NoSuchElement异常未到来

当webelement在页面中可用时,对该webelement执行的所有操作都将起作用,但如果该页面中没有webelement,那么理想情况下,当我们对该webelement执行任何操作时,它应该抛出异常。但对我来说,没有例外,测试也没有响应,即使在调试时它也没有响应。

任何人都可以告诉我你这是在发生吗?

4 个答案:

答案 0 :(得分:5)

尝试通过设置隐式超时来查找元素

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
try {
    driver.findElement(By.id("element_id"));
    System.out.println("Element Found");
} catch (NoSuchElementException e) {
    System.out.println("Element Not Found");
}

答案 1 :(得分:1)

我希望您在对 Try / Catch '块中的元素存在进行' 断言 ',然后再对其执行操作。一般实践(我遵循的和我所知道的很多)是断言元素存在,然后对它进行操作(如果是)。

像 -

public boolean isElementPresent(By by) {
    try {
        driver.findElement(by);
        System.out.println("Element Present");
        return true;
    } catch (NoSuchElementException e) {
        System.out.println("Element absent");
        return false;
    }
}

可能会为您解决问题!

答案 2 :(得分:1)

[FindsBy(How = How.CssSelector, Using = "someCssSelector")]
IWebElement element;

  public static bool IsElementPresent(IWebElement element)
        {
            try
            {
                return element.Displayed;
            }
            catch (NoSuchElementException)
            {
                return false;
            }
        }

以上代码为我制定了

答案 3 :(得分:1)

确保导入: 导入org.openqa.selenium.NoSuchElementException ;

不导入 java.util