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

如何在Serenity中开启多浏览器实例测试实时聊天功能?

Serenity 2.6.0 多浏览器实例测试实时聊天解决方案

单台机器实现双浏览器实例的方法

Serenity默认采用单会话复用策略,直接调用open()会复用现有WebDriver实例,导致新窗口替换旧实例。要同时打开两个独立浏览器,需手动创建并管理多个WebDriver实例,脱离Serenity默认会话管理:

  • 以Java为例的代码实现:
    // 初始化第一个浏览器实例(模拟聊天用户A)
    WebDriver driverA = new ChromeDriver();
    driverA.get("你的聊天应用URL");
    
    // 初始化第二个浏览器实例(模拟聊天用户B)
    WebDriver driverB = new ChromeDriver();
    driverB.get("你的聊天应用URL");
    
    // 执行聊天交互逻辑
    // 用户A发送消息
    driverA.findElement(By.id("msg-input")).sendKeys("测试实时消息");
    driverA.findElement(By.id("send-btn")).click();
    
    // 用户B验证接收消息
    String receivedMsg = driverB.findElement(By.cssSelector(".msg-list .msg-item")).getText();
    Assert.assertTrue(receivedMsg.contains("测试实时消息"));
    
    // 手动关闭两个实例
    driverA.quit();
    driverB.quit();
    
  • 若使用Serenity Page Object,需为每个WebDriver实例单独绑定Page对象,避免复用默认会话的Page实例。

替代方案(当手动管理实例繁琐时)

如果需要更灵活的多实例管理或扩展到多机器测试,可选择:

  • Selenium Grid:在本地启动Grid Hub和至少2个Node节点,配置并发会话数,让Serenity通过Grid分发测试任务,实现多浏览器实例并行运行。
  • 多线程测试框架:结合JUnit/TestNG的多线程执行功能,在Serenity配置中添加serenity.reuse.browser=false关闭会话复用,每个测试线程对应一个独立的浏览器实例。

问题原因说明

连续调用open()会替换旧实例,是因为Serenity默认会复用同一个WebDriver会话,所有测试步骤共享当前浏览器实例,新的open()操作只会在现有实例中打开新页面,而非创建新浏览器进程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:55:21