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

使用WebDriver IO上传10GB大文件失败问题求助

解决WebDriver IO上传大文件(10GB+)失败的问题

当前使用browser.uploadFile()的脚本在处理小文件时正常,但10GB及以上大文件上传失败,核心原因是uploadFile()会先将本地文件传输到Selenium服务器,大文件的传输过程容易触发超时、内存不足等问题。以下是针对性的解决办法:

1. 直接使用本地文件路径(本地测试环境优先)

如果你的Selenium服务器和测试脚本运行在同一机器,完全不需要通过browser.uploadFile()中转,直接传入本地文件路径即可。注意Windows路径需要转义(用双反斜杠或正斜杠):

const path = require('path');
// 修正路径转义问题,原脚本的单斜杠会被识别为转义字符
const localFilePath = path.resolve('C:\\Users\\Dev030126\\Downloads\\MediaFile\\V1.mp4');
$('.upload-data-file-input').setValue(localFilePath);

2. 调整Selenium服务器的资源配置(远程环境)

若必须使用远程Selenium节点,需要修改服务器启动参数和WebDriver IO配置,提升资源配额和超时时间:

  • 启动Selenium服务器时增加JVM内存(根据实际硬件调整):
    java -Xmx16G -jar selenium-server.jar standalone
    
  • 在WebDriver IO配置文件中延长超时时间:
    exports.config = {
      // 其他已有配置
      capabilities: [{
        browserName: 'chrome',
        'selenium:timeout': 3600000 // 设置为1小时,根据文件上传耗时调整
      }]
    };
    

3. 直接调用后端上传API(最稳定方案)

如果自有应用提供了后端上传接口,跳过前端文件输入框,直接用HTTP请求工具上传文件,完全规避WebDriver的限制:

const axios = require('axios');
const fs = require('fs');

const fileStream = fs.createReadStream('C:\\Users\\Dev030126\\Downloads\\MediaFile\\V1.mp4');
axios.post('/api/your-upload-endpoint', fileStream, {
  headers: {
    'Content-Type': 'video/mp4'
  },
  maxContentLength: Infinity,
  maxBodyLength: Infinity
})
.then(response => {
  console.log('上传成功:', response.data);
})
.catch(error => {
  console.error('上传失败:', error);
});

4. 检查并调整浏览器上传限制

部分浏览器对单文件上传有默认大小限制,可通过启动参数放宽限制(以Chrome为例):

exports.config = {
  capabilities: [{
    browserName: 'chrome',
    'goog:chromeOptions': {
      args: [
        '--disable-web-security',
        '--allow-file-access-from-files'
      ]
    }
  }]
};

内容的提问来源于stack exchange,提问作者Jyoti Prakash Mallick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:45:11