From 603cadb2ef44e739c450375783dc357b0f35c771 Mon Sep 17 00:00:00 2001 From: fofolee Date: Thu, 23 Jan 2025 10:46:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=A1=A8=E5=8D=95=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E5=8A=9F=E8=83=BD=EF=BC=9A=E5=9C=A8=E6=B5=8F=E8=A7=88?= =?UTF-8?q?=E5=99=A8=E5=91=BD=E4=BB=A4=E4=B8=AD=E6=B7=BB=E5=8A=A0=20submit?= =?UTF-8?q?Form=20=E6=96=B9=E6=B3=95=EF=BC=8C=E6=94=AF=E6=8C=81=E9=80=9A?= =?UTF-8?q?=E8=BF=87=E9=80=89=E6=8B=A9=E5=99=A8=E5=A1=AB=E5=86=99=E8=BE=93?= =?UTF-8?q?=E5=85=A5=E6=A1=86=E5=B9=B6=E6=8F=90=E4=BA=A4=E8=A1=A8=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin/lib/quickcomposer/browser/browser.js | 2 +- .../lib/quickcomposer/browser/execScript.js | 22 +++++++++++++++++ src/js/composer/commands/browserCommands.js | 24 +++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/plugin/lib/quickcomposer/browser/browser.js b/plugin/lib/quickcomposer/browser/browser.js index ac52c18..73a71e8 100644 --- a/plugin/lib/quickcomposer/browser/browser.js +++ b/plugin/lib/quickcomposer/browser/browser.js @@ -326,7 +326,7 @@ const executeScript = async (tab, script, args = {}) => { const argValues = Object.values(args).map((v) => JSON.stringify(v)); const wrappedScript = ` - (function(${argNames.join(", ")}) { + (async function(${argNames.join(", ")}) { ${script} })(${argValues.join(", ")}) `; diff --git a/plugin/lib/quickcomposer/browser/execScript.js b/plugin/lib/quickcomposer/browser/execScript.js index 4075b18..21aec07 100644 --- a/plugin/lib/quickcomposer/browser/execScript.js +++ b/plugin/lib/quickcomposer/browser/execScript.js @@ -19,6 +19,27 @@ const inputText = async (tab, selector, text) => { ); }; +const submitForm = async (tab, buttonSelector, inputSelectors) => { + return await executeScript( + tab, + ` + const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms)); + let el = null; + ${inputSelectors + .map( + (i) => + `el = document.querySelector('${i.selector}'); + el.value = '${i.value}'; + el.dispatchEvent(new Event('input')); + el.dispatchEvent(new Event('change'));` + ) + .join("await sleep(200);")} + await sleep(200); + document.querySelector('${buttonSelector}').click(); + ` + ); +}; + const getText = async (tab, selector) => { return await executeScript( tab, @@ -116,6 +137,7 @@ const injectCSS = async (tab, css) => { module.exports = { clickElement, inputText, + submitForm, getText, getHtml, hideElement, diff --git a/src/js/composer/commands/browserCommands.js b/src/js/composer/commands/browserCommands.js index cc5f7b1..e8e6998 100644 --- a/src/js/composer/commands/browserCommands.js +++ b/src/js/composer/commands/browserCommands.js @@ -410,6 +410,30 @@ export const browserCommands = { }, ], }, + { + value: "quickcomposer.browser.submitForm", + label: "提交表单", + icon: "send", + config: [ + { + topLabel: "上方填要点击的提交按钮,下方添加要操作的输入框", + component: "ArrayEditor", + width: 12, + columns: { + selector: { + label: "输入框选择器", + options: { + cssSelector: true, + }, + }, + value: { + label: "要填入的值", + }, + }, + isCollapse: false, + }, + ], + }, { value: "quickcomposer.browser.getText", label: "获取文本",