除了用于记录目的之外,是否还有必要处理硒中的异常?

我发现很难理解硒中异常处理的意义。例如,如果我尝试单击某个元素,但找不到该元素,NoSuchElementException则会发生这种情况。我可以捕获异常,抛出新的RunTimeException,或者什么都不做。结果将是相同的(程序将失败并停止)。


我为什么要费心处理这样的异常?


我在这里错过了什么吗?


谢谢


    public void clickOnElement(MobileElement element, Integer waitInSeconds){

    waitInSeconds = (waitInSeconds != null ? waitInSeconds : this.secondsToWait);

    try {

        waitFor(ExpectedConditions.elementToBeClickable(element),waitInSeconds);

        element.click();

    } catch (Exception e) {

        System.out.println("Could not click on element");

        e.printStackTrace();

    }

}


慕仙森
浏览 119回答 3
3回答

凤凰求蛊

Selenium 的异常处理是证明您的测试不受意外情况影响的好方法。例如,如果元素不再附加到页面,您可以尝试再次查找该元素,例如在执行更改元素中的某些内容的 javascript 之后。try{    driver.findElement(By.id("MyId")).click();} catch (StaleElementReferenceException e){    driver.findElement(By.id("MyId")).click();}或者,例如,如果某个元素没有出现,您可以忽略,例如登录后页面顶部的 GDPR 覆盖。try {    wait.until(ExpectedConditions.presenceOfElementLocated(By.id("gdpr_overlay")));} catch (TimeoutException ignored){}如果覆盖没有出现,这将忽略等待引发的异常并继续运行您的测试。

红颜莎娜

异常是非常有用的功能,远比日志记录有用,你应该查一下。你可以在 catch 块中做任何你想做的事情,如果第一个元素失败,你可以尝试单击不同的元素,重定向到另一个页面......可能性真的是无穷无尽的。忠告:避免泛型异常,你应该捕获特定的异常并做出相应的反应,在最后一个catch块中你可以做泛型异常e并抛出错误。

犯罪嫌疑人X

首先 ExceptionHandling 不是 Selenium 的概念,但它与 JAVA 有关。现在谈到处理异常的用法,它对您在构建框架时将理解的概念有很多深入的了解,但到目前为止,通过处理异常来理解您可以继续执行您的代码而不用 JVM 终止其余部分时它是很重要的遇到异常。try{}catch{}finally{}当你总是想执行一段代码时,不管你的场景是通过还是失败,finally 也非常有用,例如 driver.close()。希望对您有所帮助......快乐的编码:)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java