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

JMeter中Selenium WebDriver采样器执行异常及报错求助

JMeter中Selenium WebDriver代码执行问题排查与解决

你在JMeter中使用Selenium WebDriver代码时遇到以下问题:

  1. 未生成指定的日志文件
  2. System.out.println语句无输出
  3. 报错ERROR c.g.j.p.w.s.WebDriverSampler: unknown protocol: data

你提供的代码如下:

package com.jmeter.test.scripts;

import java.io.File;
import org.testng.annotations.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.OutputType;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.TakesScreenshot;

@Test
public class SnapScreenshot
{
    String fileName = UUID.randomUUID.toString();

    public static void main(String[] args)
    {
        System.setProperty("webdriver.chrome.driver", "C:\\Apache\\apache-jmeter-5.5\\Drivers\\Chrome\\109\\chromedriver.exe");
        System.setProperty("webdriver.chrome.logfile", "C:\\Temp\\driverlog.log");
        System.setProperty("webdriver.chrome.verboseLogging", "true");

        WebDriver driver = new ChromeDriver();
        driver.manage().window().maximize();
        driver.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
        driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        driver.get("https://www.google.com/");

        Thread.sleep(5000);

        File srcFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
        File destFile = new File("C:\\temp\\screenshots\\" + fileName + ".png");

        try
        {
            FileUtils.copyFile(srcFile, destFile);
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
        finally
        {
            driver.quit();
        }
    }
}

以下是针对性的解决方法:


问题1:未生成指定的日志文件

原因

  • 你已通过jp@gc - Chrome Driver Config配置驱动,再用System.setProperty重复设置驱动及日志属性会导致冲突,配置元件的优先级更高。
  • 日志目标目录(如C:\Temp)可能不存在,Chrome不会自动创建目录。

解决

  1. 删除代码中System.setProperty("webdriver.chrome.driver", "...")这一行,避免和配置元件冲突。
  2. 在jp@gc - Chrome Driver Config的Additional Command Line Arguments中添加日志参数:
    --log-path=C:\Temp\driverlog.log --verbose-logging
    
  3. 手动创建C:\Temp目录,确保Chrome有权限写入该路径。

问题2:System.out.println无输出

原因

  • JMeter的WebDriver Sampler不会直接输出System.out内容到控制台,且你代码中的main方法在JMeter环境下不会被执行。

解决

  1. 替换System.out.println为JMeter官方日志API,输出内容会写入jmeter.log文件或在JMeter日志面板显示:
    WDS.log.info("你的输出内容");
    
  2. 移除代码中的main方法,JMeter WebDriver Sampler直接执行脚本逻辑,无需入口方法。

问题3:报错unknown protocol: data

原因

  • 代码结构不符合JMeter WebDriver Sampler要求:使用了package、@Test注解和main方法,且手动初始化ChromeDriver与配置元件的驱动实例冲突。
  • 缺失必要的类导入(如UUID、ChromeDriver、TimeUnit),导致执行异常。

解决

  1. 去掉代码中的package、@Test和main方法,按照JMeter WebDriver Sampler的Groovy脚本规范编写逻辑。
  2. 使用配置元件提供的WDS.browser实例,无需手动创建ChromeDriver。
  3. 补充所有缺失的导入类。

修正后的完整代码(适用于JMeter WebDriver Sampler)

import java.io.File;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;

// 生成随机文件名
String fileName = UUID.randomUUID().toString();

// 使用配置元件初始化的浏览器实例
WDS.browser.manage().window().maximize();
WDS.browser.manage().timeouts().pageLoadTimeout(40, TimeUnit.SECONDS);
WDS.browser.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
WDS.browser.get("https://www.google.com/");

WDS.log.info("页面加载完成,等待5秒");
Thread.sleep(5000);

// 确保截图目录存在
File destFile = new File("C:\\temp\\screenshots\\" + fileName + ".png");
destFile.getParentFile().mkdirs();

// 截图并保存
try {
    File srcFile = ((TakesScreenshot) WDS.browser).getScreenshotAs(OutputType.FILE);
    FileUtils.copyFile(srcFile, destFile);
    WDS.log.info("截图已保存至:" + destFile.getAbsolutePath());
} catch (Exception ex) {
    WDS.log.error("截图保存失败", ex);
} finally {
    WDS.browser.quit();
}

关键注意事项

  • 确保jp@gc - Chrome Driver Config中配置的ChromeDriver版本与本地Chrome浏览器版本完全匹配。
  • 若使用JMeter 5.5及以上版本,建议使用Groovy作为脚本语言,避免Java语法兼容问题。
  • 执行前确认C:\temp\screenshots目录存在,或依赖代码中destFile.getParentFile().mkdirs()自动创建目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 22:16:17