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

JMeter WebDriver Sampler无法运行求助(多浏览器报错)

JMeter WebDriver Sampler 启动报错解决方案

问题概述

使用JMeter的WebDriver Sampler自动化应用时,Chrome、Gecko、Chromium Driver均出现报错,核心错误为java.lang.NoClassDefFoundError: Could not initialize class org.openqa.selenium.remote.http.netty.NettyClient;Chromium浏览器虽能启动,但会触发超时错误。

环境版本

  • JMeter:5.3
  • Java:17.0.6 LTS
  • Chrome Driver:120(对应Chrome浏览器120.0)
  • WebDriver版本:4.13.0

示例脚本(BeanShell)

var driverHandler = JavaImporter(org.openqa.selenium, org.openqa.selenium.support.ui);
var sleepSynchronizer = new driverHandler.WebDriverWait(WDS.browser, 5000);

driverHandler.sampleResult.sampleStart();
//Render the home Page
WDS.browser.get('<application URL>');
sleepSynchronizer.until(driverHandler.ExpectedConditions.elementToBeClickable(sleepSynchronizer.By.id('details-button')));

//Handling Cookies
var sessionCOOKIES = WDS.browser.manage().getCookies();
WDS.vars.putObject('cookies', sessionCOOKIES)
java.lang.Thread.sleep(6000);

报错详情

Chrome Driver报错

2024-01-13 19:55:24,522 ERROR o.a.j.JMeter: Uncaught exception in thread Thread[Thread Group 1-1,6,main]
java.lang.NoClassDefFoundError: Could not initialize class org.openqa.selenium.remote.http.netty.NettyClient
    at org.openqa.selenium.remote.http.netty.NettyClient$Factory.createClient(NettyClient.java:124) ~[selenium-remote-driver-4.13.0.jar:?]
    at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:115) ~[selenium-remote-driver-4.13.0.jar:?]
    at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:92) ~[selenium-remote-driver-4.13.0.jar:?]
    at org.openqa.selenium.remote.service.DriverCommandExecutor.<init>(DriverCommandExecutor.java:89) ~[selenium-remote-driver-4.13.0.jar:?]
    at org.openqa.selenium.chromium.ChromiumDriverCommandExecutor.<init>(ChromiumDriverCommandExecutor.java:43) ~[selenium-chromium-driver-4.13.0.jar:?]

Gecko Driver报错

2024-01-13 19:37:27,069 ERROR o.a.j.JMeter: Uncaught exception in thread Thread[Thread Group 1-1,6,main]
java.lang.NoClassDefFoundError: Could not initialize class org.openqa.selenium.remote.http.netty.NettyClient
    at org.openqa.selenium.remote.http.netty.NettyClient$Factory.createClient(NettyClient.java:124) ~[selenium-remote-driver-4.13.0.jar:?]
    at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:115) ~[selenium-remote-driver-4.13.0.jar:?]
    at org.openqa.selenium.remote.HttpCommandExecutor.<init>(HttpCommandExecutor.java:92) ~[selenium-remote-driver-4.13.0.jar:?]
    at org.openqa.selenium.remote.service.DriverCommandExecutor.<init>(DriverCommandExecutor.java:89) ~[selenium-remote-driver-4.13.0.jar:?]
    at org.openqa.selenium.firefox.FirefoxDriver$FirefoxDriverCommandExecutor.<init>(FirefoxDriver.java:415) ~[selenium-firefox-driver-4.13.0.jar:?]
    at org.openqa.selenium.firefox.FirefoxDriver.generateExecutor(FirefoxDriver.java:147) ~[selenium-firefox-driver-4.13.0.jar:?]
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:132) ~[selenium-firefox-driver-4.13.0.jar:?]

Chromium Driver报错

注意:Chromium浏览器可启动,但出现以下报错

2024-01-13 19:38:16,709 ERROR o.a.j.t.JMeterThread: Error calling threadStarted
org.openqa.selenium.WebDriverException: Timed out waiting for driver server to start.
Build info: version: '4.13.0', revision: 'ba948ece5b*'
System info: os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '17.0.6'
Driver info: driver.version: unknown
    at org.openqa.selenium.remote.service.DriverService.start(DriverService.java:248) ~[selenium-remote-driver-4.13.0.jar:?]
    at com.googlecode.jmeter.plugins.webdriver.config.ChromeDriverConfig.getThreadService(ChromeDriverConfig.java:47) ~[jmeter-plugins-webdriver-4.13.0.0.jar:?]
    at com.googlecode.jmeter.plugins.webdriver.config.ChromeDriverConfig.createBrowser(ChromeDriverConfig.java:26) ~[jmeter-plugins-webdriver-4.13.0.0.jar:?]
    at com.googlecode.jmeter.plugins.webdriver.config.ChromeDriverConfig.createBrowser(ChromeDriverConfig.java:14) ~[jmeter-plugins-webdriver-4.13.0.0.jar:?]
    at com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig.getPreparedBrowser(WebDriverConfig.java:221) ~[jmeter-plugins-webdriver-4.13.0.0.jar:?]
    at com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig.threadStarted(WebDriverConfig.java:152) ~[jmeter-plugins-webdriver-4.13.0.0.jar:?]
    at org.apache.jmeter.threads.JMeterThread$ThreadListenerTraverser.addNode(JMeterThread.java:769) [ApacheJMeter_core.jar:5.3]

解决方案

1. 补全Netty相关依赖包

NoClassDefFoundError核心原因是缺少Selenium 4.x依赖的Netty组件,需确保以下Jar包存在于JMeter的lib/ext目录:

  • netty-buffer-*.jar
  • netty-codec-*.jar
  • netty-codec-http-*.jar
  • netty-codec-http2-*.jar
  • netty-common-*.jar
  • netty-handler-*.jar
  • netty-resolver-*.jar
  • netty-transport-*.jar

若通过JMeter插件管理器安装WebDriver Sampler,可重新安装插件,自动补全所有依赖。

2. 匹配版本兼容性

JMeter 5.3官方推荐Java版本为8-11,Java 17兼容性有限,建议降级至Java 11 LTS。同时确认WebDriver Sampler插件版本与Selenium版本严格匹配(当前WebDriver 4.13.0对应插件版本4.13.0.0,检查lib/ext目录下jmeter-plugins-webdriver-4.13.0.0.jar是否存在)。

3. 检查Driver配置与权限

  • 在WebDriver Config元件中,确保Driver路径指向正确的可执行文件(如chromedriver.exe);
  • Linux/Mac系统需给Driver文件添加可执行权限:chmod +x chromedriver;
  • 关闭浏览器自动更新,避免浏览器版本与Driver版本不匹配。

4. 延长Driver启动超时

针对Chromium的超时问题,在WebDriver Config元件中找到“Timeout”设置,将启动超时时间从默认值延长至60秒以上,避免系统资源不足导致启动失败。

5. 切换脚本语言为Groovy

BeanShell兼容性差、性能弱,建议替换为Groovy脚本,示例如下:

import org.openqa.selenium.support.ui.WebDriverWait
import org.openqa.selenium.support.ui.ExpectedConditions

def wait = new WebDriverWait(WDS.browser, 5)

WDS.sampleResult.sampleStart()
WDS.browser.get('<application URL>')
wait.until(ExpectedConditions.elementToBeClickable(wait.by.id('details-button')))

def cookies = WDS.browser.manage().getCookies()
WDS.vars.putObject('cookies', cookies)
Thread.sleep(6000)

WDS.sampleResult.sampleEnd()

6. 清理JMeter缓存

删除JMeterbin/cache目录下的所有文件,重启JMeter,避免旧缓存导致类加载冲突。

内容的提问来源于stack exchange,提问作者Jyoti Prakash Mallick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 13:14:53