From 5c6e452a8dea7a6f2fa10eb6d4863162ef4dacb1 Mon Sep 17 00:00:00 2001 From: foxhui Date: Tue, 30 Dec 2025 01:13:20 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=B5=8B=E8=AF=95=E8=A7=A6=E5=8F=91?= =?UTF-8?q?=E6=87=92=E5=8A=A0=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/backend/adapter/gemini.js | 8 ++++---- src/backend/adapter/zai_is.js | 21 ++++++++++++++------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/backend/adapter/gemini.js b/src/backend/adapter/gemini.js index b58b7f1..46dfe23 100644 --- a/src/backend/adapter/gemini.js +++ b/src/backend/adapter/gemini.js @@ -15,8 +15,7 @@ import { moveMouseAway, waitForInput, gotoWithCheck, - waitApiResponse, - scrollToElement + waitApiResponse } from '../utils/index.js'; import { logger } from '../../utils/logger.js'; @@ -174,8 +173,9 @@ async function generate(context, prompt, imgPaths, modelId, meta = {}) { meta }); - // 将图片滚动到可视范围,触发懒加载 - await scrollToElement(page, 'generated-image', { timeout: 120000 }); + // 等待图片元素出现,然后在chat-history上滚动触发懒加载 + await page.locator('generated-image').waitFor({ state: 'attached', timeout: 120000 }); + await safeScroll(page, '#chat-history', { deltaY: 700 }); imageResponse = await imageResponsePromise; } catch (e) { const pageError = normalizePageError(e, meta); diff --git a/src/backend/adapter/zai_is.js b/src/backend/adapter/zai_is.js index 426b739..71a295d 100644 --- a/src/backend/adapter/zai_is.js +++ b/src/backend/adapter/zai_is.js @@ -137,8 +137,8 @@ async function generate(context, prompt, imgPaths, modelId, meta = {}) { await waitForInput(page, INPUT_SELECTOR, { click: false }); await sleep(1500, 2500); - // 2. 上传图片 (如果有多张图片,会一张一张上传,每次都是 v1/files POST 请求) - if (imgPaths && imgPaths.length > 0) { + // 2. 并行执行:上传图片 + 填写提示词 + const uploadTask = (imgPaths && imgPaths.length > 0) ? (async () => { const expectedUploads = imgPaths.length; let uploadedCount = 0; @@ -155,13 +155,20 @@ async function generate(context, prompt, imgPaths, modelId, meta = {}) { return false; } }); + await sleep(500, 1000); + })() : Promise.resolve(); - await sleep(1000, 2000); - } + const promptTask = (async () => { + // 等待一小段时间,让图片上传先开始(pasteImages 会先点击输入框) + if (imgPaths && imgPaths.length > 0) { + await sleep(800, 1200); + } + await safeClick(page, INPUT_SELECTOR, { bias: 'input' }); + await fillPrompt(page, INPUT_SELECTOR, prompt, meta); + })(); - // 3. 填写提示词 - await safeClick(page, INPUT_SELECTOR, { bias: 'input' }); - await fillPrompt(page, INPUT_SELECTOR, prompt, meta); + // 等待两个任务都完成 + await Promise.all([uploadTask, promptTask]); await sleep(500, 1000); // 4. 通过 UI 交互选择模型