gpt4 book ai didi

java - Selenium 网络驱动程序 : best practice to handle a NoSuchElementException

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:50:44 25 4
gpt4 key购买 nike

经过大量搜索和阅读,我仍然不清楚使用 Webdriver 处理失败断言的最佳方法。我本以为这是一个常见的核心功能。我想做的就是:

  • 寻找一个元素
  • 如果存在 - 告诉我
  • 如果不存在 - 告诉我

我想向非技术人员展示结果,因此让它抛出带有完整堆栈跟踪的“NoSuchElementExceptions”没有帮助。我只是想要一个好消息。

我的测试:

@Test
public void isMyElementPresent(){
// WebElement myElement driver.findElement(By.cssSelector("#myElement"));
if(driver.findElement(By.cssSelector("#myElement"))!=null){
System.out.println("My element was found on the page");
}else{
System.out.println("My Element was not found on the page");
}
}

当我强制失败时,我仍然会抛出 NoSuchElementException。我也需要 try/catch 吗?我能否合并 Junit 断言和/或 Hamcrest 以生成更有意义的消息而不需要 System.out.println?

最佳答案

我遇到过类似的情况。根据Javadoc对于 findElementfindElements API,findElement 行为似乎是设计使然。您应该使用 findElements 来检查不存在的元素。

由于在您的情况下,WebElement 可能不存在,因此您应该改用 findElements

我会按如下方式使用它。

List<WebElement> elems = driver.findElements(By.cssSelector("#myElement"));
if (elems.size == 0) {
System.out.println("My element was not found on the page");
} else
System.out.println("My element was found on the page");
}

关于java - Selenium 网络驱动程序 : best practice to handle a NoSuchElementException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22780964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com