【发布时间】:2017-02-09 18:15:33
【问题描述】:
在 WebDriver 中使用的强大的 Try Catch 方法?
有人可以从那里获得建议,在搜索元素超时或使用了不正确的定位器的可能情况下,以下方法看起来是否正确?
在我将等待设置为 2 秒并使用错误的 xpath 更改定位器后,超时异常 dosnt 似乎正在打印我的 System.out.println
我的代码:
public void clickSupercarsLink() throws Exception {
try {
this.wait.until(ExpectedConditions.elementToBeClickable(link_Supercars)).click();
} catch (TimeoutException e) {
System.out.println("UNABLE TO FIND ELEMENT : Timeout");
} catch (Exception e) {
System.out.println("UNABLE TO FIND ELEMENT : Exception");
throw (e);
}
}
新代码:
public void clickSupercarsLink() throws Exception {
try {
this.wait.until(ExpectedConditions.elementToBeClickable(link_Supercars)).click();
} catch (TimeoutException e) {
System.out.println("Timed out attempting to click on element: <" + link_Supercars.toString() + ">");
} catch (Exception e) {
System.out.println("Unable to click on element: " + "<" + link_Supercars.toString() + ">");
}
}
【问题讨论】:
-
你不打算在
TimeoutException的情况下重新抛出吗? -
@Andy Turner 你有什么建议?如果我重新抛出异常怎么办(如果听起来很愚蠢,对不起)
-
不知道,我不知道你想做什么。我只是指出,在
TimeoutException的情况下,该方法将正常返回,即使链接没有被点击。 -
"如果我重新抛出异常会做什么" 如果你不知道它在做什么,为什么要在
catch Exception分支中做呢? -
@Phil_P85 所以,你想区分 TmeoutException 和其他异常,这没关系。但问题是什么?你期望代码做什么,它做了什么?您写道: timeout Exception dosnt 似乎正在打印... 那么,它打印了什么?也许,抛出了另一个异常。如果没有堆栈跟踪或至少有错误消息,我们永远不会知道。
标签: java selenium selenium-webdriver webdriver