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

JMeter中WDS退出浏览器报错:Session ID为空,如何解决?

解决JMeter WebDriver采样器退出浏览器时的Session ID null错误

问题描述

在JMeter线程的最后一个Selenium采样器中尝试退出浏览器时,持续触发以下错误:

INFO c.g.j.p.w.s.WebDriverSampler: WebDriver has been quit.
2024-02-01 22:53:24,989 ERROR c.g.j.p.w.s.WebDriverSampler: Session ID is null. Using WebDriver after calling quit()?
Build info: version: '4.10.0', revision: 'c14d967899'

先后尝试过WDS.browser.quit()和WDS.browser.close()两种关闭方式,问题仍未解决。相关代码片段如下:

var handles = WDS.browser.getWindowHandles().toArray();
WDS.browser.switchTo().window(handles[handles.length - 1]);
java.lang.Thread.sleep(3000);
WDS.browser.close();
WDS.log.info("(ACO Dashboard Visit 360 Map) Page load correctly.");
        }

    } else {
        WDS.log.info("The Trimmed text does not contain ' Visit 360'. Skipping click.");
    }
} catch (err) {
    WDS.log.error("Error: " + err);
} finally {
    WDS.browser.quit();
    WDS.log.info("WebDriver has been quit.");
}

问题原因

代码中先调用WDS.browser.close()关闭当前窗口,若该窗口是浏览器的最后一个窗口,WebDriver会话会被自动终止。此时在finally块中再次调用WDS.browser.quit(),就会因会话已不存在(Session ID为null)而触发错误。

解决方案

根据实际场景选择以下任意一种处理方式:

方案1:移除重复的quit()调用

如果WDS.browser.close()关闭的是最后一个窗口,会话会自动结束,无需额外调用quit()。修改代码移除finally块中的quit()逻辑:

var handles = WDS.browser.getWindowHandles().toArray();
WDS.browser.switchTo().window(handles[handles.length - 1]);
java.lang.Thread.sleep(3000);
WDS.browser.close();
WDS.log.info("(ACO Dashboard Visit 360 Map) Page load correctly.");
        }

    } else {
        WDS.log.info("The Trimmed text does not contain ' Visit 360'. Skipping click.");
    }
} catch (err) {
    WDS.log.error("Error: " + err);
} finally {
    WDS.log.info("Browser window closed, session ended.");
}

方案2:统一使用quit()关闭所有窗口

移除代码中的WDS.browser.close(),仅在finally块中调用quit()——该方法会关闭所有打开的窗口并终止会话:

var handles = WDS.browser.getWindowHandles().toArray();
WDS.browser.switchTo().window(handles[handles.length - 1]);
java.lang.Thread.sleep(3000);
WDS.log.info("(ACO Dashboard Visit 360 Map) Page load correctly.");
        }

    } else {
        WDS.log.info("The Trimmed text does not contain ' Visit 360'. Skipping click.");
    }
} catch (err) {
    WDS.log.error("Error: " + err);
} finally {
    WDS.browser.quit();
    WDS.log.info("WebDriver has been quit.");
}

方案3:根据窗口数量选择关闭方式

如果不确定当前是否为最后一个窗口,可先判断窗口数量,剩余1个时用quit(),否则用close():

var handles = WDS.browser.getWindowHandles().toArray();
WDS.browser.switchTo().window(handles[handles.length - 1]);
java.lang.Thread.sleep(3000);

// 根据窗口数量选择关闭方式
if (handles.length === 1) {
    WDS.browser.quit();
    WDS.log.info("WebDriver has been quit.");
} else {
    WDS.browser.close();
    WDS.log.info("Current browser window closed.");
}

WDS.log.info("(ACO Dashboard Visit 360 Map) Page load correctly.");
        }

    } else {
        WDS.log.info("The Trimmed text does not contain ' Visit 360'. Skipping click.");
    }
} catch (err) {
    WDS.log.error("Error: " + err);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:42:44