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

Puppeteer结合BrowserStack Local无法上传本地文件的解决方法

解决BrowserStack Local + Puppeteer 文件上传问题

一、本地文件无法通过隧道读取的修复方案

  • 绑定测试会话与隧道:启动BrowserStack Local隧道时添加--local-identifier参数(例如--local-identifier my-test-tunnel),同时在Puppeteer的能力配置中加入browserstack.localIdentifier: "my-test-tunnel",确保远程测试会话关联到你建立的隧道。
  • 修正路径逻辑:代码里的__dirname是本地脚本的路径,但BrowserStack的Puppeteer运行在远程机器上,该路径对远程环境无效。若要通过隧道上传本地文件,需先将文件放在本地HTTP服务中,但Puppeteer的uploadFile仅支持本地路径,更高效的方式是使用BrowserStack文件上传功能。

二、BrowserStack文件与媒体区的存储路径

上传至文件与媒体区的文件,会被存储在BrowserStack远程测试机器的/data/user_files/目录下。比如上传了test.png,在测试代码中直接使用路径/data/user_files/test.png即可访问。

三、调整后的上传代码示例

// 适配BrowserStack远程文件路径的上传函数
uploadFile: async (uploadSelector, fileName) => {
    // 直接使用BrowserStack远程机器上的文件路径
    let remoteFilePath = `/data/user_files/${fileName}`;
    let uploadButton = await scope.page.$(uploadSelector);
    await uploadButton.uploadFile(remoteFilePath);
    await uploadButton.evaluate((upload) =>
        upload.dispatchEvent(new Event('change', { bubbles: true }))
    );
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 07:37:15