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

跨浏览器测试Allure报告仅显示第二个浏览器结果问题排查

问题根源

你遇到的问题核心是两次测试运行复用了同一个Allure结果目录,第二次执行时会覆盖第一次生成的测试结果文件,导致Allure只显示最后一次的结果。Allure本身完全支持跨浏览器测试,问题出在结果存储的配置上。

解决方案

1. 给每个浏览器测试指定独立的Allure结果目录

修改Jenkins中的执行命令,通过allure.results.directory系统属性为每个浏览器指定单独的结果目录:

# Edge测试命令
test -DsuiteXMLFile=src/main/resources/Runner/test_Something.xml -DBrowserName=edge -Dallure.results.directory=allure-results-edge

# Chrome测试命令
test -DsuiteXMLFile=src/main/resources/Runner/test_Something.xml -DBrowserName=chrome -Dallure.results.directory=allure-results-chrome

2. 聚合两个目录的结果生成完整报告

在Jenkins的Allure Report配置中,将Results directories设置为allure-results-edge,allure-results-chrome(用逗号分隔两个目录),这样Allure会合并两个浏览器的测试结果生成统一报告。

额外优化建议

虽然不是当前问题的直接原因,但你的BrowserFactory类存在线程安全隐患:

  • 类中的static WebDriver driver是全局静态变量,虽然你在Page类用了ThreadLocal,但BrowserFactory.getDriver()每次都会覆盖这个静态变量,在并行测试场景下可能导致驱动实例混乱。
  • 优化方案:把BrowserFactory中的static WebDriver driver去掉,直接让getDriver()返回新的实例,不要用静态变量存储:
public class BrowserFactory {
    // 移除static WebDriver driver;

    public static WebDriver getDriver() {
        String browser = System.getProperty("BrowserName");
        if ("edge".equals(browser)) {
            return initializeEdgeDriver();
        }
        return initializeChromeDriver();
    }

    // 其他方法保持不变...
}

这样每个线程获取的都是独立的驱动实例,避免静态变量带来的线程安全问题。

内容的提问来源于stack exchange,提问作者Silviu Sabău

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:15:35