为什么我们抓住NoSuchElementException
?当我们仅验证特定页面中元素的存在而不对其执行任何操作时捕获异常是有意义的。我们可以捕获此异常并记录自定义消息,例如"未找到元素"
当我们要点击某个元素时,如果在页面中找不到该元素,则selenium会抛出NoSuchElementException
。捕获此异常有什么用,而不是让它停止测试并使测试用例失败?
注意:我的后续步骤取决于此点击步骤。
答案 0 :(得分:1)
捕获异常的一个原因是提供更相关的测试失败输出。例如,如果在20-30个div的页面中找不到div
元素,导致选择器与该特定div不匹配,您可以通过一般错误消息让异常保持未被捕获,或者您可以捕获它并抛出一个不同的异常,并显示错误消息“navbar is missing”。
如果从通用错误消息中清楚地看出错误,或者您有解释它的测试失败消息,则没有理由抓住它。
捕获此异常的另一个原因是它是跳过代码的一部分(如果/除非跳过此测试)。所以你要找一个元素,如果它存在,你继续进行测试,如果不是 - 你跳过它。
可能还有其他原因,但这些是两个常见原因。
答案 1 :(得分:0)
有两种类型的例外:
1.Checked Exceptions
2.Unchecked Exceptions
Checked Exceptions仅在编译时检查,这些应该由程序员处理。如果没有发生编译时错误,编译器将在编译时检查是否处理这些异常。一些已检查的异常是IOException,FileNotFoundExpection等。
未选中的例外情况: 编译时编译器不会检查未经检查的异常。 RuntimeException类扩展的异常都是未经检查的异常。一些未经检查的异常是AritmeticException,NullPointerException等。在selenium中,我们看到未经检查的异常,例如NoSuchElementException,StaleElementReferenceException,NoSuchWindowException,TimeoutException等。
简而言之,必须捕获已检查的异常。不应该捕获RuntimeException,也称为未经检查的异常
可在
上找到更多信息http://toolsqa.com/selenium-webdriver/exception-handling-selenium-webdriver/ http://www.seleniumeasy.com/java-tutorials/exception-handling-in-selenium-webdriver-using-java-examples