JMeter集成Selenium在Linux运行时出现moz-proxy LDAP认证报错如何解决
Selenium集成JMeter在Linux环境运行Firefox代理LDAP认证报错解决方案
问题场景
- 测试栈:JMeter + Selenium + Firefox Driver Config + Gecko Driver 开展性能测试
- 现象:测试脚本在本地Windows环境可正常执行,部署到Linux服务器运行时抛出如下错误:
"The proxy moz-proxy://host:port is requesting a username and password. The site says: “LDAP”:"
- 已完成前置排查:
- Gecko Driver版本与Linux服务器安装的Firefox版本完全匹配兼容
- 已在服务器系统代理配置、JMeter启动命令中传入代理认证凭据,仍触发报错
可行解决方案
1. 通过Firefox Driver Config直接预置代理配置与认证凭据
Linux环境下运行的Firefox无头实例不会自动读取系统代理配置、JVM启动参数传入的代理凭据,必须通过Firefox首选项直接注入配置,不要依赖外部传参:
- 打开JMeter测试计划中的
Firefox Driver Config元件 - 找到*Preferences(首选项)*配置区,逐行新增以下键值对:
network.proxy.type = 1 network.proxy.http = <替换为实际代理IP/域名> network.proxy.http_port = <替换为实际代理端口> network.proxy.ssl = <替换为实际代理IP/域名> network.proxy.ssl_port = <替换为实际代理端口> network.proxy.no_proxies_on = 127.0.0.1,localhost signon.autologin.proxy = true network.automatic-ntlm-auth.trusted-uris = <替换为实际代理IP/域名> network.negotiate-auth.delegation-uris = <替换为实际代理IP/域名> network.negotiate-auth.trusted-uris = <替换为实际代理IP/域名> - 删除JMeter启动命令中
-Dhttp.proxyUser、-Dhttp.proxyPassword这类JVM代理参数,这类参数无法被Gecko Driver透传给Firefox实例,反而会造成配置冲突。
注意:不要直接复用Windows环境导出的Firefox Profile配置文件,Linux下路径编码、权限模型差异会导致配置加载失效,直接在配置元件中逐行添加首选项即可。
2. 补充Firefox无头模式启动参数,修复沙箱权限问题
Linux服务器大多无桌面环境,默认启动的Firefox无头实例会开启沙箱隔离,root用户运行时还会触发权限限制,导致代理认证模块无法读取已配置的凭据:
- 在
Firefox Driver Config的*Arguments(启动参数)*区域新增以下参数:--headless --no-sandbox --disable-dev-shm-usage --disable-gpu - 给Gecko Driver、Firefox二进制文件赋可执行权限,执行命令:
chmod +x /path/to/geckodriver /path/to/firefox
3. 兜底方案:通过Selenium脚本注册认证处理器
如果上述配置仍不生效,可以直接在WebDriver Sampler的脚本中注册代理认证逻辑,在发起请求前自动完成凭据校验,示例代码:
import org.openqa.selenium.UsernameAndPassword; import java.net.URI; // 注册代理认证凭据 webDriver.register( UsernameAndPassword.of("<替换为LDAP代理用户名>", "<替换为LDAP代理密码>"), URI.create("http://<替换为实际代理IP/域名>:<替换为实际代理端口>") ); // 后续再执行目标页面访问逻辑 webDriver.get("<替换为测试目标地址>");
注意:该方案适配Gecko Driver 0.32及以上版本,低版本需先升级Gecko Driver与对应匹配的Firefox版本。
内容的提问来源于stack exchange,提问作者logan122
相关产品推荐
相关产品推荐

