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

Playwright JavaScript图片上传报错:Node is not an HTMLInputElement如何解决?

修复Playwright上传文件时的"Node is not an HTMLInputElement"错误

你遇到的错误核心原因很明确:setInputFiles方法只能作用于<input type="file">元素,但你代码里定位的是<button>按钮,自然会触发报错。网站上的上传按钮只是交互入口,实际负责接收文件的是隐藏的文件输入框。

修复步骤

  • 定位真正的文件上传输入框:直接通过属性选择器定位页面中的<input type="file">元素,若页面存在多个同类元素,可结合父元素属性进一步精准筛选。
  • 移除不必要的按钮点击操作:Playwright调用setInputFiles时会自动触发上传流程,无需手动点击按钮。
  • 统一模块导入方式(可选但推荐):避免混合使用CommonJS的require和ES模块的import,减少潜在兼容性问题。

修正后的代码示例

import path from 'path';
import { test, expect } from '@playwright/test';

test("文件上传测试", async ({ page }) => {
    await page.goto('https://www.transfernow.net/es');
    // 定位文件上传输入框并设置文件
    await page.locator('input[type="file"]').setInputFiles(path.join(__dirname, 'images.png'));
});

若页面存在多个文件输入框,可通过层级关系精准定位:

// 结合容器元素缩小定位范围
await page.locator('div.upload-area input[type="file"]').setInputFiles(path.join(__dirname, 'images.png'));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 17:37:06