如何让JMeter WebDriver Sampler兼容Selenium3以适配新版Firefox?
如何让JMeter WebDriver Sampler与Selenium 3协同运行以支持新版Firefox?
我来帮你搞定这个版本兼容的难题!你当前用JMeter 4 + Selenium 2 + Firefox 45跑GUI测试一切正常,但要升级Firefox到55+就得切换到Selenium 3,可手里的WebDriver插件2.3版本还依赖Selenium 2,其实有两种可行的解决思路,我给你一步步拆解:
方案一:升级WebDriver插件到兼容Selenium 3的版本(推荐)
这是最稳妥的方式,毕竟官方后续版本已经适配了Selenium 3:
- 卸载旧插件:打开JMeter,进入
Options > Plugins Manager,找到WebDriver Sampler插件,选择卸载后重启JMeter。 - 安装新版插件:再次打开Plugins Manager,搜索WebDriver Sampler,挑选3.x及以上的版本安装(比如3.10.0这类稳定版),安装完成后务必重启JMeter。
- 替换Selenium依赖包:
- 找到JMeter安装目录下的
lib/ext文件夹,删除所有Selenium 2相关的jar包(比如selenium-java-2*.jar、selenium-server-2*.jar这类命名的文件)。 - 下载Selenium 3.x系列的完整jar包(推荐用3.141.59,这个版本对各类浏览器的兼容性都不错),把包里所有的jar文件复制到
lib/ext文件夹中。
- 找到JMeter安装目录下的
- 配置GeckoDriver:下载和Firefox 55匹配的GeckoDriver(大概是v0.18.0版本),把它放到系统PATH环境变量里,或者在WebDriver Sampler的脚本里直接指定驱动路径。
方案二:手动替换依赖包(应急用,不推荐)
如果暂时不想升级插件,可以试试手动调整依赖,但可能会有兼容性坑:
- 备份并删除旧依赖:先把
lib/ext里的Selenium 2 jar包备份好,然后删除它们。 - 导入Selenium 3 jar包:把下载好的Selenium 3.x系列jar包全部复制到
lib/ext。 - 修改脚本适配Selenium 3 API:因为Selenium 3对Firefox的驱动方式变了,旧脚本要调整,比如:
这种方法可能会遇到未知的bug,毕竟旧插件是基于Selenium 2开发的,部分API调用可能失效,所以优先选方案一。旧的Selenium 2初始化代码:
FirefoxDriver driver = new FirefoxDriver();改成Selenium 3兼容的写法:
System.setProperty("webdriver.gecko.driver", "/你的geckodriver路径/geckodriver"); FirefoxOptions options = new FirefoxOptions(); options.setCapability("marionette", true); FirefoxDriver driver = new FirefoxDriver(options);
额外注意事项
- 一定要保证GeckoDriver和Firefox版本严格匹配,不然会出现浏览器启动失败的问题。
- 升级插件后,最好检查下WebDriver Sampler里的脚本,把Selenium 3已经废弃的API替换掉,比如
findElementByXPath()要改成findElement(By.xpath("xxx"))。 - 所有配置完成后,先跑一个简单的测试脚本(比如打开Firefox访问首页)验证是否正常,确认没有报错再进行正式测试。
内容的提问来源于stack exchange,提问作者Neng Yang
相关产品推荐
相关产品推荐

