1.向当前活动网页上传文件
(async function () {
let target = {tabId: null};//或 { targetId: null }
await chrome.debugger.attach(target, "1.3");
d = await chrome.debugger.sendCommand(target, "DOM.getDocument");
d = await chrome.debugger.sendCommand(target, "DOM.querySelector", {
nodeId: d.root.nodeId,
selector: "input[type='file']",
});
await chrome.debugger.sendCommand(target, "DOM.setFileInputFiles", {
nodeId: d.nodeId,
files: ["C:/Users/Administrator/Desktop/11.txt"]
});
return 11;
})();
2.获取当前活动网页框架的上下文ID-为在指定框架里运行js准备
(async function () {
let target = { tabId: null };
await chrome.debugger.attach(target, "1.3");
d = await chrome.debugger.sendCommand(target, "DOM.getDocument");
d = await chrome.debugger.sendCommand(target, "DOM.querySelector", {nodeId: d.root.nodeId,selector: "iframe"});
d = await chrome.debugger.sendCommand(target, "DOM.resolveNode", {nodeId: d.nodeId+1});
console.log(1111);
//await chrome.debugger.detach(target);
return d.object.objectId.split(".")[1];
})();
3.跨框架异域上传文件-模拟输入文本-运行js
(async function () {
let targetIds = [];
let d = await chrome.debugger.getTargets();
for (const targetInfo of d) {
if (targetInfo.url.includes("网页.html")) {
targetIds.push(targetInfo.id);
}
}
let target = { targetId: targetIds[0] };
//let target = { targetId: null };
await chrome.debugger.attach(target, "1.3");
//await chrome.debugger.sendCommand(target, "DOM.enable");//DOM.focus
await chrome.debugger.sendCommand(target, "Runtime.evaluate", {expression: 'document.querySelector("#titleInput").focus()'});
await chrome.debugger.sendCommand(target,"Input.insertText",{text: "文件111"});
d = await chrome.debugger.sendCommand(target, "DOM.getDocument");
b = await chrome.debugger.sendCommand(target, "DOM.querySelector", {
nodeId: d.root.nodeId,
selector: "#titleInput"
});
await chrome.debugger.sendCommand(target, "DOM.focus", {nodeId: b.nodeId});
await chrome.debugger.sendCommand(target,"Input.insertText",{text: "文件111"});
b = await chrome.debugger.sendCommand(target, "DOM.querySelector", {
nodeId: d.root.nodeId,
selector: "input[type='file']"
});
await chrome.debugger.sendCommand(target, "DOM.focus", {nodeId: b.nodeId});
await chrome.debugger.sendCommand(target,"Input.insertText",{text: "Hello, World!"});
b = await chrome.debugger.sendCommand(target, "DOM.querySelector", {
nodeId: d.root.nodeId,
selector: "input[type='file']",
});
await chrome.debugger.sendCommand(target, "DOM.focus", {nodeId: b.nodeId});
await chrome.debugger.sendCommand(target,"Input.dispatchKeyEvent",{ key: "Enter", text: "\r",type: "keyDown" });
await chrome.debugger.sendCommand(target, "DOM.setFileInputFiles", {
nodeId: d.nodeId,
files: ["C:/Users/Administrator/Desktop/11.txt"]
});
await chrome.debugger.detach(target);
return 22;
})();
4.在浏览器插件后台运行js
(async function () {
const targetIds = [];
let d = await chrome.debugger.getTargets();
for (const targetInfo of d) {
if (targetInfo.url.includes("background.js")) {
targetIds.push(targetInfo.id);
}
}
let target = { targetId: targetIds[0] };
await chrome.debugger.attach(target, "1.3");
d = await chrome.debugger.sendCommand(target, "Runtime.evaluate", {expression:"function aa(){let d = [1,2,3,5,4];return JSON.stringify(d)}"});
await chrome.debugger.detach(target);
return d;
})();