From 66bba6c4e7a530fcada4afd291305aa9606090bf Mon Sep 17 00:00:00 2001 From: knowen <1369727119@qq.com> Date: Thu, 19 Mar 2026 11:47:52 +0800 Subject: [PATCH] =?UTF-8?q?feat(gemini-ops):=20=E6=96=B0=E5=A2=9E=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E5=88=B7=E6=96=B0=E5=8A=9F=E8=83=BD=EF=BC=8C=E8=B0=83?= =?UTF-8?q?=E6=95=B4=E7=82=B9=E5=87=BB=E6=93=8D=E4=BD=9C=E6=8A=96=E5=8A=A8?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/gemini-ops.js | 22 ++++++++++++++++++++++ src/operator.js | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/gemini-ops.js b/src/gemini-ops.js index 7afa712..7e9c7b1 100644 --- a/src/gemini-ops.js +++ b/src/gemini-ops.js @@ -649,6 +649,28 @@ export function createOps(page) { // ─── 高层组合操作 ─── + /** + * 刷新当前页面 + * + * 适用于页面卡住、状态异常等场景。 + * 刷新后会等待页面重新加载完成(waitUntil: networkidle2)。 + * + * @param {object} [options] + * @param {number} [options.timeout=30000] - 等待页面加载的超时时间(ms) + * @returns {Promise<{ok: boolean, elapsed?: number, error?: string, detail?: string}>} + */ + async reloadPage({ timeout = 30_000 } = {}) { + try { + const start = Date.now(); + await page.reload({ waitUntil: 'networkidle2', timeout }); + const elapsed = Date.now() - start; + console.log(`[ops] 页面刷新完成 (${elapsed}ms)`); + return { ok: true, elapsed }; + } catch (e) { + return { ok: false, error: 'reload_failed', detail: e.message }; + } + }, + /** * 上传图片到 Gemini 输入框 * diff --git a/src/operator.js b/src/operator.js index 634fe54..52c5459 100644 --- a/src/operator.js +++ b/src/operator.js @@ -122,7 +122,7 @@ export function createOperator(page) { * @returns {Promise<{ok: boolean, selector?: string, x?: number, y?: number, error?: string}>} */ async click(selectors, opts = {}) { - const { jitter = 3, delayBeforeClick = 50, clickDuration = 80 } = opts; + const { jitter = 10, delayBeforeClick = 50, clickDuration = 80 } = opts; const sels = Array.isArray(selectors) ? selectors : [selectors]; const loc = await locate(sels);