企业机器JMeter+Firefox Driver配置启动失败求助
问题解决:JMeter结合Firefox Driver启动失败
问题背景
在企业机器上使用JMeter 5.6.2搭配jp@gc系列插件(Firefox Driver Config和WebDriver Sampler)自动化微软登录页面时,Firefox浏览器无法启动,抛出会话创建异常。
配置信息
- JMeter版本:5.6.2
- Selenium-api版本:4.10
- Gecko-Driver版本:V0.33.0 - X64
- 已安装插件:Plugins Manager、jp@gc - Firefox Driver Config、jp@gc - WebDriver Sampler
- Firefox浏览器版本:117.0.1(64位)
- Firefox安装路径:
C:\Users\username\AppData\Local\Mozilla Firefox - 限制:企业机器无管理员权限,无法修改浏览器exe位置或系统环境变量
- 已配置:在JMeter系统属性文件中添加驱动路径
webdriver.gecko.driver=C:/Users/username/Downloads/DriversLatest/geckodriver.exe
报错信息
org.openqa.selenium.SessionNotCreatedException: 无法启动新会话。响应码500。消息:需要浏览器二进制文件路径,但在默认位置找不到,未提供'moz:firefoxOptions.binary'能力参数,命令行也未设置二进制文件标志。
详细错误堆栈
Driver info: org.openqa.selenium.firefox.FirefoxDriver Command: [null, newSession {capabilities=[Capabilities {acceptInsecureCerts: false, browserName: firefox, moz:debuggerAddress: true, moz:firefoxOptions: {profile: UEsDBBQACAgIAI5QNlcAAAAAAAA...}, proxy: Proxy(system)}]}] at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:140) ~[selenium-remote-driver-4.10.0.jar:?] at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:96) ~[selenium-remote-driver-4.10.0.jar:?] at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:68) ~[selenium-remote-driver-4.10.0.jar:?] at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:163) ~[selenium-remote-driver-4.10.0.jar:?] at org.openqa.selenium.remote.service.DriverCommandExecutor.invokeExecute(DriverCommandExecutor.java:196) ~[selenium-remote-driver-4.10.0.jar:?] at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:171) ~[selenium-remote-driver-4.10.0.jar:?] at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:531) ~[selenium-remote-driver-4.10.0.jar:?] at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:227) ~[selenium-remote-driver-4.10.0.jar:?] at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:154) ~[selenium-remote-driver-4.10.0.jar:?] at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:151) ~[selenium-firefox-driver-4.10.0.jar:?] at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:146) ~[selenium-firefox-driver-4.10.0.jar:?] at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:130) ~[selenium-firefox-driver-4.10.0.jar:?] at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:125) ~[selenium-firefox-driver-4.10.0.jar:?] at com.googlecode.jmeter.plugins.webdriver.config.FirefoxDriverConfig.createBrowser(FirefoxDriverConfig.java:36) ~[jmeter-plugins-webdriver-4.10.0.0.jar:?] at com.googlecode.jmeter.plugins.webdriver.config.FirefoxDriverConfig.createBrowser(FirefoxDriverConfig.java:15) ~[jmeter-plugins-webdriver-4.10.0.0.jar:?] at com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig.getPreparedBrowser(WebDriverConfig.java:221) ~[jmeter-plugins-webdriver-4.10.0.0.jar:?] at com.googlecode.jmeter.plugins.webdriver.config.WebDriverConfig.threadStarted(WebDriverConfig.java:152) ~[jmeter-plugins-webdriver-4.10.0.0.jar:?] at org.apache.jmeter.threads.JMeterThread$ThreadListenerTraverser.addNode(JMeterThread.java:802) [ApacheJMeter_core.jar:5.6.2] at org.apache.jorphan.collections.HashTree.traverseInto(HashTree.java:1029) [jorphan.jar:5.6.2] at org.apache.jorphan.collections.HashTree.traverse(HashTree.java:1012) [jorphan.jar:5.6.2] at org.apache.jmeter.threads.JMeterThread.threadStarted(JMeterThread.java:770) [ApacheJMeter_core.jar:5.6.2] at org.apache.jmeter.threads.JMeterThread.initRun(JMeterThread.java:758) [ApacheJMeter_core.jar:5.6.2] at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:264) [ApacheJMeter_core.jar:5.6.2] at java.lang.Thread.run(Unknown Source) [?:1.8.0_351] 2023-09-22 10:04:30,452 ERROR o.a.j.t.JMeterThread: 处理采样器时出错: 'jp@gc - WebDriver Sampler'. java.lang.IllegalArgumentException: 浏览器未配置。请确保为线程组至少创建一个WebDriverConfig。 at com.googlecode.jmeter.plugins.webdriver.sampler.WebDriverSampler.sample(WebDriverSampler.java:65) ~[jmeter-plugins-webdriver-4.10.0.0.jar:?] at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:651) ~[ApacheJMeter_core.jar:5.6.2] at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:570) ~[ApacheJMeter_core.jar:5.6.2] at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:501) [ApacheJMeter_core.jar:5.6.2] at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:268) [ApacheJMeter_core.jar:5.6.2] at java.lang.Thread.run(Unknown Source) [?:1.8.0_351]
解决方案
由于Firefox安装在非默认路径,且无管理员权限修改系统设置,需手动指定Firefox二进制文件路径:
- 打开JMeter中的
jp@gc - Firefox Driver Config配置元件 - 切换到「Firefox Options」标签页
- 在「Binary」输入框中填写Firefox.exe的完整路径:
C:\Users\username\AppData\Local\Mozilla Firefox\firefox.exe - 保存配置后重新运行测试
原理:GeckoDriver无法在默认位置定位Firefox,通过moz:firefoxOptions.binary参数明确指定浏览器二进制文件路径,即可解决会话创建失败的问题。
内容的提问来源于stack exchange,提问作者Abanoub Erian
相关产品推荐
相关产品推荐

