为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕仙森 2022-10-12 09:57:48
我发现很难理解硒中异常处理的意义。例如,如果我尝试单击某个元素,但找不到该元素,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();    }}
查看完整描述

3 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

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


}

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


查看完整回答
反对 回复 2022-10-12
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

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



查看完整回答
反对 回复 2022-10-12
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

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


try{

}

catch{

}

finally

{

}

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


查看完整回答
反对 回复 2022-10-12
  • 3 回答
  • 0 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号