//文件上传函数
async function 文件上传(e) {
let {target: t, selector: r, files: o} = e
, n = await Pe(t)
, a = !1;
try {
a = (await chrome.debugger.getTargets()).some(u => u.tabId === n.tabId && u.attached),
a || await chrome.debugger.attach(n, "1.3");
let l = await chrome.debugger.sendCommand(n, "DOM.getDocument", {});
l = await chrome.debugger.sendCommand(n,"DOM.querySelector", {"nodeId": l.root.nodeId,"selector":r});
l = await chrome.debugger.sendCommand(n, "DOM.setFileInputFiles", {"nodeId":l.nodeId,"files":o});
return a || await chrome.debugger.detach(n),l
} catch (s) {
if (!a)
try {
await chrome.debugger.detach(n)
} catch (l) {
console.error("\u5206\u79BB\u8C03\u8BD5\u5668\u65F6\u51FA\u9519:", l)
}
throw s
}
}
//参数说明
target: 调试目标
selector: 文件框css选择器
files: 需要上传文件的路径数组
//参数示例
{
"target": {"tabId": 123},
"selector": "#fileInput",
"files":["C:/Users/Administrator/Desktop/js脚本.txt"]
}
该方法可以通过控制浏览器上传文件,把浏览器插件下载到本地,然后改用一下调用此函数,再用浏览器加载浏览器插件,调用可以成功运行此函数.
但通过浏览器插件商店下载的插件测试时,运行到此await chrome.debugger.sendCommand(n, "DOM.setFileInputFiles", {"nodeId":l.nodeId,"files":o});会报错,不知是否可以有方法解决