升级WebDriver 4.13.0.1后JMeter WebDriver Sampler报Invalid call sequence错误
问题分析与解决方案:JMeter WebDriver Sampler "Invalid call sequence" 错误
错误成因
WebDriver Sampler 4.13.0.1版本已**自动默认调用sampleStart()**启动采样计时,你的脚本中第2行手动执行WDS.sampleResult.sampleStart();属于重复触发该方法,违反了JMeter SampleResult的调用序列规则,因此抛出"sampleStart called twice"的错误。这是新版本采样器的行为变更,旧版本可能允许手动控制采样周期,但新版本已简化为自动管理。
最佳实践与配置建议
- 移除手动的采样生命周期调用:删除脚本中的
WDS.sampleResult.sampleStart();和WDS.sampleResult.sampleEnd();,由WebDriver Sampler自动处理采样的开始与结束。 - 自定义采样范围的正确方式:若需统计特定操作的耗时,可先忽略默认采样,再手动创建SampleResult对象实现自定义计时,示例代码:
WDS.browser.manage().window().maximize() // 忽略默认采样,避免冲突 WDS.sampleResult.setIgnore(true) // 创建自定义采样结果对象 def customResult = new org.apache.jmeter.samplers.SampleResult() customResult.sampleStart() WDS.log.info("Login page loading is started") WDS.browser.get("${base_url}") WDS.log.info("Login page is loaded") customResult.sampleEnd() // 标记采样结果状态 customResult.setSuccessful(true) customResult.setResponseMessage("登录页面加载完成") // 将自定义结果添加到采样器输出中 WDS.sampleResult.addSubResult(customResult)
- 关注版本兼容性:升级WebDriver Sampler或JMeter前,查看官方版本变更日志,明确行为变化,避免因版本差异导致的脚本兼容问题。
- 避免直接操作核心API:优先使用WebDriver Sampler提供的内置变量(如
WDS.browser、WDS.log),除非有明确的自定义需求,否则不要直接调用SampleResult的生命周期方法。 - 保持脚本简洁:仅保留必要的业务逻辑代码,将采样管理交给WebDriver Sampler自动处理,减少不必要的手动控制。
内容的提问来源于stack exchange,提问作者Chamith Priyadarshana
相关产品推荐
相关产品推荐

