1.Runtime.evaluate(运行js代码)
2.Input.dispatchKeyEvent(键盘按键)
3.Input.insertText(键盘文字输入)
4.Input.dispatchMouseEvent(鼠标点击)
5.DOM.setFileInputFiles(上传文件)
说明一下它们其中的之间的联系和作用
(1)Runtime.evaluate(运行js代码)
它的作用是运作js代码字符串和获取返回值。和其他命令组合起来就可以实现很多事件
如:
chrome.debugger.sendCommand(n, "Runtime.evaluate", {expression: 'document.querySelector("#text-editor").focus()'});
(2)Input.dispatchKeyEvent(键盘按键) 和 Runtime.evaluate(运行js代码) 组合一起的作用
使用js代码设置焦点再和键盘按键组合起来
可以解决按钮使用js代码点击无效的情况
可以模拟全选,复制,粘贴,切换,焦点
如:
chrome.debugger.sendCommand(n, "Runtime.evaluate", {expression: 'document.querySelector("#fileLabel").focus()'},a=>chrome.debugger.sendCommand(n,"Input.dispatchKeyEvent",{ key: "Enter", text: "\r",type: "keyDown" }));
(3)Input.insertText(键盘文字输入) 和 Runtime.evaluate(运行js代码) 组合一起的作用
使用js代码设置焦点再和键盘文字输入组合起来
可以解决文本框,富文本框,自定义文本框使用js代码输入无效的情况
如:
chrome.debugger.sendCommand(n, "Runtime.evaluate", {expression: 'document.querySelector("#text-editor").focus()'});
chrome.debugger.sendCommand( n,"Input.insertText",{text: "Hello, World!"});
(4)Input.dispatchMouseEvent(鼠标点击) 和 Runtime.evaluate(运行js代码) 组合一起的作用
使用js代码获取按钮坐标再和鼠标点击组合起来
可以解决按钮使用js代码点击无效的情况(键盘按键可以达到一样的效果)
如:
chrome.debugger.sendCommand(n, "Runtime.evaluate", {expression: 'var rect = document.querySelector(".submit-btn").getBoundingClientRect();var x = rect.left + rect.width / 2;var y = rect.top + rect.height / 2; [x,y]',returnByValue:true} , a=>{let [x,y]=a.result.value;
chrome.debugger.sendCommand(n, "Input.dispatchMouseEvent",{type: "mousePressed", x: x,y: y,button: "left",clickCount: 1});
chrome.debugger.sendCommand(n, "Input.dispatchMouseEvent",{type: "mouseReleased", x: x,y: y,button: "left",clickCount: 1});
});
(5)DOM.setFileInputFiles(上传文件) 和 Runtime.evaluate(运行js代码) 组合一起的作用
使用js代码获取文件上传框的objectId再上传文件命令组合起来
可以解决自动上传文件和跨框架上传文件
如:
chrome.debugger.sendCommand(n, "Runtime.evaluate", {expression: "document.querySelector('#fileInput')"},a=>chrome.debugger.sendCommand(n, "DOM.setFileInputFiles", { objectId: a.result.objectId, files: ["C:/Users/Administrator/Desktop/11.png"]}));