UI自动化测试 怎么使程序在报错的情况下继续执行

问题

在日常使用时,会出现找不到元素,或者元素无法点击等错误,怎么使程序忽略掉这些错误,继续执行后面的代码呢

报错信息

环境

在 UI 自动化测试中,如果出现找不到元素或元素无法点击的错误,可以使用以下方法处理这些错误,使程序忽略它们并继续执行后面的代码:

  1. 使用异常捕获:在出现找不到元素或无法点击的错误时,使用 try-catch 块捕获异常,然后在 catch 块中处理错误。可以选择打印错误信息或记录日志,并继续执行后续的代码。

例子:

try {
    WebElement element = driver.findElement(By.id("myElement"));
    element.click();
} catch (NoSuchElementException e) {
    // 处理元素找不到的错误
    System.out.println("找不到元素");
    e.printStackTrace();
} catch (ElementNotInteractableException e) {
    // 处理元素无法点击的错误
    System.out.println("元素无法点击");
    e.printStackTrace();
}

// 继续执行后续的代码
  1. 使用条件判断:在进行元素操作之前,可以使用条件判断来检查元素是否存在或可交互。如果元素不存在或无法交互,则跳过该操作,继续执行后续的代码。

例子:

WebElement element = driver.findElement(By.id("myElement"));
if (element.isDisplayed() && element.isEnabled()) {
    element.click();
} else {
    System.out.println("元素不存在或无法交互");
}

// 继续执行后续的代码
  1. 使用显示等待:使用显示等待机制来等待元素出现或可交互,超时时间内如果仍然未出现或不可交互,则抛出 TimeoutException 异常。在捕获 TimeoutException 异常后,可以选择处理错误或继续执行后续的代码。

例子:

WebDriverWait wait = new WebDriverWait(driver, 10);
try {
    WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id("myElement")));
    element.click();
} catch (TimeoutException e) {
    // 处理超时错误
    System.out.println("超时,无法点击元素");
    e.printStackTrace();
}

// 继续执行后续的代码