【问题标题】:Is there a point to handle exceptions in selenium besides for logging purposes?除了用于记录目的之外,是否还有必要处理硒中的异常?
【发布时间】:2019-04-18 08:11:43
【问题描述】:

我发现很难理解 selenium 中异常处理的意义。 例如,如果我尝试单击一个元素,但找不到该元素,则会出现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();
    }
}

【问题讨论】:

  • 如果您需要等待页面加载后添加的元素(想想异步加载的 div),您可能需要一些代码不断尝试查找该元素并且仅在找到时返回,或者一段时间过去了。

标签: java selenium exception appium


【解决方案1】:

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){

}

如果覆盖没有出现,这将忽略等待引发的异常并继续运行您的测试。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 所以基本上如果我捕捉到异常并在catch块中点击另一个元素,程序会继续运行吗?
    • 对我来说听起来很像使用异常进行流控制。
    【解决方案3】:

    首先,ExceptionHandling 不是 Selenium 的概念,而是与 JAVA 有关。现在谈到处理异常的用法,它对您在构建框架时会理解的概念有很多深入的了解,但是到目前为止,通过处理异常来理解很重要,您可以继续执行您的代码,而 JVM 不会终止其余的代码。遇到异常。

    try{
    }
    catch{
    }
    finally
    {
    }
    

    当你总是想执行一段代码时,不管你的场景是通过还是失败,最后也是非常有用的,例如 driver.close()。 希望对您有所帮助......快乐的编码:)

    【讨论】:

      猜你喜欢
      • 2012-09-23
      • 2012-11-25
      • 2022-10-02
      • 2011-02-23
      • 1970-01-01
      • 1970-01-01
      • 2016-05-18
      • 2023-03-31
      • 2014-09-28
      相关资源
      最近更新 更多