我的问题是我有customWaitMethods,例如:
public void waitForLoading(WebElement loadingElement, WebElement errorElement) {
long timeOut = Long.parseLong(PropertyReader.getInstance().getProperty("DEFAULT_TIME_OUT"));
try {
WebDriverWait wait = new WebDriverWait(DriverFactory.getInstance().getDriver(), timeOut);
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id(loadingElement.toString())));
if (errorElement.isDisplayed()) {
throw new TestException();
}
} catch (TimeoutException e) {
System.out.println("Timed out after default time out");
} catch (TestException e) {
System.out.println("Unexpected error occurred, environment error");
e.printStackTrace();
}
}
我需要一些通用的customWait方法。我做了一个搜索,但需要处理几个案例。出现错误消息 - >测试失败了。等待加载内容,它消失了, - >检查搜索结果。
如果我想连续检查一些error_message元素,我怎么能扩展这段代码呢?在这种情况下我会抛出异常?所以我可以独立处理超时异常,另一个是错误消息msg?
由于IF,这个sript失败了。 ErrorElement没有出现在页面上,---> NoSuchElementException异常
答案 0 :(得分:1)
您可以根据需要catch
个Exception
个catch
。在您的情况下,您希望TimeoutException
catch
来处理超时。然后public void waitForLoading() {
long timeOut = Long.parseLong(...);
try {
WebDriverWait wait = new WebDriverWait(...);
wait.until(ExpectedConditions.invisibilityOfElementLocated(...));
if (<error-message-appears>) {
throw new CustomErrorMessageAppearedException();
}
} catch (TimeoutException e) {
System.out.println("Timed out after...");
} catch (CustomErrorMessageAppearedException e) {
// handle error message
}
}
处理错误消息的不同类型的异常:
using namespace std
答案 1 :(得分:0)
我看到的最简单的方法是:
public void waitForLoading() {
long timeOut = Long.parseLong(PropertyReader.getInstance().getProperty("DEFAULT_TIME_OUT"));
try {
WebDriverWait wait = new WebDriverWait(DriverFactory.getInstance().getDriver(), timeOut);
if (!wait.until(ExpectedConditions.invisibilityOfElementLocated(By.id("wait_element")));)
{
throw new NoSuchElementException();
}
} catch (TimeOutException e) {
System.out.println("Timed out after " + timeOut + "seconds waiting for loading the results.");
}
}