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

Groovy 保存浏览器会话到Excel后无法转回WebDriver实例问题求助

核心问题说明

WebDriver是JVM运行时的内存对象,仅在当前测试套件的进程生命周期内有效,你存入Excel的字符串只是ChromeDriver实例调用toString()的文本输出,并非序列化的对象数据,既不可能通过更换存储介质直接存储实例,也不可能从这串文本还原出可用的WebDriver对象,原有两个思路均不可行。

可行解决方案

方案1:同一次测试执行内跨套件复用(最简方案)

如果你的多个测试套件是放在同一个**测试集(Test Suite Collection)**中顺序执行的,可以直接使用测试集级别的全局变量存储WebDriver实例,不会在单个测试套件运行结束后被清除:

  • 打开Katalon的「Profiles」设置,新建变量时选择「Execution」级别(而非默认的Test Suite级别)
  • 首次创建WebDriver后直接赋值给该全局变量,后续套件直接调用该变量传入DriverFactory.changeWebDriver()即可

方案2:跨执行进程复用会话(适合多次执行场景)

利用Chrome的远程调试能力,仅存储必要的会话信息,不需要存完整的WebDriver实例,操作步骤如下:

  1. 首次启动Chrome配置
    自定义Chrome启动参数,开启远程调试端口,示例代码:
    import org.openqa.selenium.chrome.ChromeOptions
    import com.kms.katalon.core.webui.driver.DriverFactory
    
    ChromeOptions options = new ChromeOptions()
    // 自定义未占用的端口,比如9222
    options.addArguments("--remote-debugging-port=9222")
    WebDriver initialDriver = new ChromeDriver(options)
    // 存储两个信息到Excel:调试端口9222、会话ID
    String savedSessionId = initialDriver.getSessionId().toString()
    DriverFactory.changeWebDriver(initialDriver)
    
  2. 后续测试套件恢复会话
    连接已打开的Chrome进程,挂载原有会话:
    import org.openqa.selenium.chrome.ChromeOptions
    import com.kms.katalon.core.webui.driver.DriverFactory
    
    ChromeOptions recoverOpts = new ChromeOptions()
    // 连接到之前开启调试端口的Chrome进程
    recoverOpts.setExperimentalOption("debuggerAddress", "localhost:9222")
    WebDriver recoverDriver = new ChromeDriver(recoverOpts)
    // 直接传入恢复的driver实例即可操作原有浏览器会话
    DriverFactory.changeWebDriver(recoverDriver)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:45:04