3

在 webdriver 的页面中找不到 webElement 时不会出现 NoSuchElement 异常

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

谁能告诉我这正在发生吗?

4

4 回答 4

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");
}
于 2012-08-28T07:17:31.920 回答
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;
    }
}

可能会为您解决问题!

于 2012-08-27T06:43:44.077 回答
1
[FindsBy(How = How.CssSelector, Using = "someCssSelector")]
IWebElement element;

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

上面的代码为我解决了

于 2016-06-21T14:09:48.250 回答
1

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

不要导入java.util

于 2018-11-12T18:16:04.510 回答