You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Confluence页面输入/唤起应用弹窗后继续输入的Playwright脚本问题

Confluence内容区唤起应用选择弹窗并输入的解决方案

问题核心

输入/唤起弹窗后,再次调用type方法输入应用名称时,原有的/被替换,导致弹窗失去触发条件而关闭。这通常是因为二次定位元素时DOM已发生变化,或type操作覆盖了原有内容。

可行解决方案

方案1:复用主内容区元素引用

输入/后,保持对同一主内容区元素的引用,继续追加输入应用名称,避免重新定位导致的内容覆盖:

// 提前定位主内容区元素并保存引用
const mainContentParagraph = page.locator('[aria-label="Main content area"] p');

// 输入/唤起弹窗
await mainContentParagraph.type('/');
// 等待弹窗加载完成
await page.waitForSelector('[role="listbox"]');
// 复用同一元素引用,追加输入应用名称
await mainContentParagraph.type(nameOfApplication);

// 执行目标应用点击逻辑(已实现部分)

方案2:定位弹窗内的搜索输入框

部分Confluence版本中,唤起弹窗后焦点会自动转移到弹窗的搜索框,直接定位该输入框输入应用名称即可:

await page.locator('[aria-label="Main content area"] p').type('/');
await page.waitForSelector('[role="listbox"]');

// 定位弹窗内的搜索输入框(可根据实际DOM调整选择器)
await page.locator('[role="listbox"] [aria-label="Search"]').type(nameOfApplication);

// 执行目标应用点击逻辑(已实现部分)

方案3:使用键盘连续输入

通过键盘事件直接连续输入/和应用名称,确保输入动作的连贯性,避免DOM变化影响:

// 先确保焦点在主内容区
await page.locator('[aria-label="Main content area"] p').click();
// 连续输入/ + 应用名称
await page.keyboard.type(`/${nameOfApplication}`);
// 等待弹窗加载
await page.waitForSelector('[role="listbox"]');

// 执行目标应用点击逻辑(已实现部分)

内容的提问来源于stack exchange,提问作者Den Silver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 01:25:29