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

Apache JMeter WebDriver Sampler无法建立WebSocket连接问题求助

JMeter + Selenium WebDriver WebSocket连接失败问题解决

问题描述

使用Apache JMeter 5.5搭配Selenium WebDriver 4.8.1采样器(脚本语言为Java),此前代码运行正常,但上周开始出现ConnectionFailedException,无法建立WebSocket连接。推测需要添加ChromeOptions配置及selenium-http-jdk-client依赖,请求协助解决问题并指导如何在JMeter采样器中添加该依赖。

错误堆栈信息

ERROR o.a.j.t.JMeterThread: Error calling threadStarted
org.openqa.selenium.remote.http.ConnectionFailedException: Unable to establish websocket connection to http://localhost:60730/devtools/browser/65875193-2def-446d-9a5b-07717e6ef06d
Build info: version: '4.8.1', revision: '8ebccac989'
System info: os.name: 'Windows 11', os.arch: 'amd64', os.version: '10.0', java.version: '17.0.3'
Driver info: driver.version: ChromeDriver
    at org.openqa.selenium.remote.http.netty.NettyWebSocket.<init>(NettyWebSocket.java:102) ~[selenium-remote-driver-4.8.1.jar:?]
    at org.openqa.selenium.remote.http.netty.NettyWebSocket.lambda$create$3(NettyWebSocket.java:128) ~[selenium-remote-driver-4.8.1.jar:?]
    at org.openqa.selenium.remote.http.netty.NettyClient.openSocket(NettyClient.java:107) ~[selenium-remote-driver-4.8.1.jar:?]
    at org.openqa.selenium.devtools.Connection.<init>(Connection.java:78) ~[selenium-remote-driver-4.8.1.jar:?]
    at org.openqa.selenium.chromium.ChromiumDriver.lambda$new$2(ChromiumDriver.java:116) ~[selenium-chromium-driver-4.8.1.jar:?]
    at java.util.Optional.map(Optional.java:260) ~[?:?]
    at org.openqa.selenium.chromium.ChromiumDriver.<init>(ChromiumDriver.java:114) ~[selenium-chromium-driver-4.8.1.jar:?]
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:82) ~[selenium-chrome-driver-4.8.1.jar:?]
    at com.googlecode.jmeter.plugins.webdriver.config.ChromeDriverConfig.createBrowser(ChromeDriverConfig.java:28) ~[jmeter-plugins-webdriver-4.8.1.jar:?]
    at com.googlecode.jmeter.plugins.webdriver.config.ChromeDriverConfig.createBrowser(ChromeDriverConfig.java:14) ~[jmeter-plugins-webdriver-4.8.1.jar:?]
    at com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig.getPreparedBrowser(WebDriverConfig.java:215) ~[jmeter-plugins-webdriver-4.8.1.jar:?]
    at com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig.threadStarted(WebDriverConfig.java:146) ~[jmeter-plugins-webdriver-4.8.1.jar:?]
    at org.apache.jmeter.threads.JMeterThread$ThreadListenerTraverser.addNode(JMeterThread.java:797) ~[ApacheJMeter_core.jar:5.5]
    at org.apache.jorphan.collections.HashTree.traverseInto(HashTree.java:993) ~[jorphan.jar:5.5]
    at org.apache.jorphan.collections.HashTree.traverse(HashTree.java:976) ~[jorphan.jar:5.5]
    at org.apache.jmeter.threads.JMeterThread.threadStarted(JMeterThread.java:765) ~[ApacheJMeter_core.jar:5.5]
    at org.apache.jmeter.threads.JMeterThread.initRun(JMeterThread.java:753) ~[ApacheJMeter_core.jar:5.5]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:264) ~[ApacheJMeter_core.jar:5.5]
    at java.lang.Thread.run(Thread.java:833) ~[?:?]

登录采样器代码片段

import org.openqa.selenium.*;
import org.openqa.selenium.support.ui.*;
import org.junit.Assert;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.time.Duration;
import java.io.*;
import java.lang.String;
import java.io.*;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.Writer;
import java.util.Arrays;
import org.apache.jmeter.services.Fileserver;

var driver=WDS.browser;

// Load Url
driver.get("https://sample.website/");
driver.manage().window().setSize(new Dimension(1936, 1048));
driver.manage().window().maximize();
String title = driver.getTitle();
System.out.println(title);
Assert.assertEquals("SampleTitle", title);
driver.findElement(By.xpath(".//span[text()='Login with Azure AD']")).click();
System.out.println("LoadUrl Successful");
WDS.log.info("LoadUrl Successful");

建议的修复方案

1. 添加ChromeOptions配置

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--remote-allow-origins=*");
ChromeDriver driver = new ChromeDriver(chromeOptions);

2. 添加依赖

<dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-http-jdk-client</artifactId>
        <version>4.8.1</version>
</dependency>

在JMeter中添加依赖的步骤

  • 下载对应版本的selenium-http-jdk-client-4.8.1.jar文件
  • 将下载的jar文件复制到JMeter安装目录下的lib/ext文件夹中
  • 重启JMeter,确保依赖生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:35:04