You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium捕获页面错误消息逻辑异常该如何调整

逻辑问题根因

你当前的代码分支处理规则完全颠倒:

  • 页面出现错误消息时:driver.findElement()可以成功定位到p-toast-message-text元素,try块正常执行完毕不会抛出异常,测试会判定为正常继续执行,不符合错误出现时终止的要求
  • 页面无错误消息时:driver.findElement()找不到对应元素会触发NoSuchElementException,进入catch块后你主动抛出了运行时异常,反而导致正常场景测试失败
修正后代码
try {
    WebElement element = driver.findElement(By.className("p-toast-message-text"));
    // 确认错误消息元素可见才判定为出现错误
    if (element.isDisplayed()) {
        // 抛出异常终止测试,可携带错误消息内容方便排查
        throw new RuntimeException("页面出现错误提示:" + element.getText());
    }
} catch (NoSuchElementException e) {
    // 找不到错误元素属于正常场景,不做处理,直接放行继续后续测试逻辑
    System.out.println("页面无错误消息,可正常跳转");
}
可选优化点

如果你的项目引入了显式等待工具,可替换硬查找的逻辑,避免元素还没渲染完成就判定结果:

import org.openqa.selenium.support.ui.WebDriverWait;
import org.openqa.selenium.support.ui.ExpectedConditions;
import java.time.Duration;

// 省略其他代码
try {
    WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(2));
    WebElement element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.className("p-toast-message-text")));
    throw new RuntimeException("页面出现错误提示:" + element.getText());
} catch (org.openqa.selenium.TimeoutException e) {
    // 等待2秒后仍未找到可见的错误元素,判定为无错误,正常放行
}

内容的提问来源于stack exchange,提问作者sdev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:06:05