JMeter运行WebDriver Sampler时出现NoSuchMethodError错误求助
Guava版本冲突导致JMeter WebDriver测试报错的解决方案
错误原因
这个java.lang.NoSuchMethodError报错是Guava(Google Commons工具库)版本不兼容引发的:
- 你使用的Selenium 4.9.1需要Guava支持
ImmutableMap.of()方法的12参数重载,但JMeter默认自带的Guava版本过旧,没有该方法,导致调用失败。
修复步骤
- 找到JMeter安装目录下的
lib文件夹,删除其中旧版本的guava-xxx.jar文件(比如JMeter 5.6自带的是guava-30.1.1-jre.jar)。 - 下载适配Selenium 4.9.1的Guava版本(推荐31.1-jre及以上版本),将下载的jar包放入JMeter的
lib目录。 - 重启JMeter,重新运行测试计划验证修复效果。
额外提示
- WebDriver Sampler是模拟真实浏览器交互,不适合高并发性能测试场景,这类场景建议使用JMeter原生的HTTP请求采样器,效率更高。
- 确保WebDriver插件版本与Selenium版本完全匹配,避免出现其他版本兼容问题。
用户问题原文
我正在为自己的网站做性能测试,用JMeter创建了测试计划(项目截图显示测试计划结构),但运行时持续出现以下错误,尝试多种方法仍无法解决:
错误日志
2023-07-04 19:32:06,010 ERROR o.a.j.JMeter: Uncaught exception in thread Thread[Thread Group 1-1,6,main] java.lang.NoSuchMethodError: 'com.google.common.collect.ImmutableMap com.google.common.collect.ImmutableMap.of(java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object, java.lang.Object)' at org.openqa.selenium.chrome.AddHasCasting.getAdditionalCommands(AddHasCasting.java:38) ~[selenium-chrome-driver-4.9.1.jar:?] at org.openqa.selenium.chrome.ChromeDriver$ChromeDriverCommandExecutor.getExtraCommands(ChromeDriver.java:116) ~[selenium-chrome-driver-4.9.1.jar:?] at org.openqa.selenium.chrome.ChromeDriver$ChromeDriverCommandExecutor.<init>(ChromeDriver.java:111) ~[selenium-chrome-driver-4.9.1.jar:?] at org.openqa.selenium.chrome.ChromeDriver.generateExecutor(ChromeDriver.java:101) ~[selenium-chrome-driver-4.9.1.jar:?] at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:88) ~[selenium-chrome-driver-4.9.1.jar:?] at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:84) ~[selenium-chrome-driver-4.9.1.jar:?] at com.googlecode.jmeter.plugins.webdriver.config.ChromeDriverConfig.createBrowser(ChromeDriverConfig.java:28) ~[jmeter-plugins-webdriver-4.9.1.0.jar:?] at com.googlecode.jmeter.plugins.webdriver.config.ChromeDriverConfig.createBrowser(ChromeDriverConfig.java:14) ~[jmeter-plugins-webdriver-4.9.1.0.jar:?] at com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig.getPreparedBrowser(WebDriverConfig.java:221) ~[jmeter-plugins-webdriver-4.9.1.0.jar:?] at com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig.threadStarted(WebDriverConfig.java:152) ~[jmeter-plugins-webdriver-4.9.1.0.jar:?] at org.apache.jmeter.threads.JMeterThread$ThreadListenerTraverser.addNode(JMeterThread.java:802) ~[ApacheJMeter_core.jar:5.6] at org.apache.jorphan.collections.HashTree.traverseInto(HashTree.java:1029) ~[jorphan.jar:5.6] at org.apache.jorphan.collections.HashTree.traverse(HashTree.java:1012) ~[jorphan.jar:5.6] at org.apache.jmeter.threads.JMeterThread.threadStarted(JMeterThread.java:770) ~[ApacheJMeter_core.jar:5.6] at org.apache.jmeter.threads.JMeterThread.initRun(JMeterThread.java:758) ~[ApacheJMeter_core.jar:5.6] at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:264) ~[ApacheJMeter_core.jar:5.6] at java.lang.Thread.run(Thread.java:833) [?:?] 2023-07-04 19:32:06,010 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test 2023-07-04 19:32:06,011 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
内容的提问来源于stack exchange,提问作者user3374671
相关产品推荐
相关产品推荐

