WSL环境下Playwright调用SetInputFiles上传文件无法定位文件怎么办
WSL环境下Playwright文件上传路径配置方案
- 核心逻辑前提:WSL内启动的Playwright拉起的浏览器进程运行在Linux子系统环境内,仅默认对WSL原生ext4文件系统路径有完整读写权限,
/mnt/开头的Windows磁盘挂载路径存在跨系统权限映射问题,会出现无编辑权限、路径识别失败的情况,禁止作为测试上传文件的存储目录。 - 正确的文件存放路径:直接在WSL用户家目录下创建专属测试文件目录即可,终端执行以下命令完成创建:
所有待上传的测试文件统一放到mkdir -p ~/pw-upload-files chmod 755 ~/pw-upload-files/home/你的WSL用户名/pw-upload-files/路径下,该目录属于WSL原生文件系统,不存在权限映射问题。 SetInputFiles()方法正确用法:该API的实现逻辑是直接向文件输入框注入文件引用,完全绕开系统文件选择弹窗的交互流程,不需要提前点击上传按钮唤起文件选择窗口。如果代码运行时弹出了文件选择对话框,说明执行逻辑顺序有误。
代码调用时直接传入WSL内部的文件绝对路径即可,C#版本示例如下:// 定位type为file的input元素,不要定位可见的上传按钮 var fileInput = page.Locator("input[type='file']"); // 传入WSL原生路径,禁止使用/mnt开头的挂载路径 await fileInput.SetInputFilesAsync("/home/你的WSL用户名/pw-upload-files/测试文件.pdf");- 文件选择弹窗找不到文件夹问题说明:弹出的文件选择器是WSL侧Linux浏览器的原生组件,默认会隐藏部分系统级运行目录(包括node相关的运行时目录),且按照正确逻辑调用
SetInputFiles()时不会触发该弹窗,不需要在弹窗内手动查找文件。 - 快速校验方法:文件存入指定目录后,执行
ls -l ~/pw-upload-files/确认目标文件对当前用户可读,即可保证上传逻辑正常运行,不会出现权限报错。
内容的提问来源于stack exchange,提问作者Niky
相关产品推荐
相关产品推荐

