跳转到内容

处理对话框

处理对话框 用于提前设置一个对话框处理器,当页面后续弹出 JS 原生对话框(alertconfirmpromptonbeforeunload)时,自动点击「确定」或「取消」,避免自动化流程被弹窗卡住。

指令标识:HandleDialog
指令类型:网页指令
指令描述:接受或拒绝 JS 对话框(alert / confirm / prompt / onbeforeunload)

工作流支持「可视化编排」和「代码编排」两种创建方式。处理对话框 在两种方式里都能用,核心业务参数一致,区别主要是你通过界面配置,还是通过 Python 脚本配置。

方式怎么用适合人群
可视化编排(推荐先学)拖入「处理对话框」节点,设置接受/拒绝、提示框输入文本大多数用户,零代码,适合快速搭建和调试
代码编排(Python)在脚本中调用 bots.handleDialog(acceptDialog="true")熟悉代码、需要复用脚本或批量生成流程的用户

第一次使用建议先用可视化编排跑通,再迁移到 Python 代码编排。下方「参数说明」同时给出界面字段和代码参数名,方便两种方式对应。

  • 点击删除、提交、离开页面时会弹出 confirm 确认框,需要自动点「确定」或「取消」。
  • 页面会弹 alert 提示框,需要自动关闭。
  • 页面弹出 prompt 输入框,需要自动填入文本并确认。
  • 页面带有「离开前确认」(onbeforeunload),需要自动放行。

重要:对话框处理器必须在弹窗出现 之前 就设置好。所以这个节点要放在「会触发弹窗的操作」(如点击删除按钮)之前。

  • 当前已经有打开的页面。
  • 已经确认会弹出哪类对话框,以及需要接受还是拒绝。
  • 处理对话框节点放在触发弹窗的操作之前。
处理对话框

下面用一个常见场景演示:点击「删除」按钮会弹出确认框,需要自动点确定

  1. 确认页面已经打开并加载完成。
  2. 添加 处理对话框 节点,设置 是否接受 为接受(确定)。
  3. 在它之后添加 点击元素,点击「删除」按钮触发确认框。
  4. 运行后观察确认框是否被自动点掉,删除是否生效。
界面名称代码属性名类型必填默认值说明
是否接受acceptDialogStringtruetrue 表示接受(点确定),false 表示拒绝(点取消)。
提示框输入文本promptTextString-仅对 prompt 类型对话框生效。接受时把该文本作为输入值提交。

该指令没有输出变量。它只是注册一个对话框处理器,效果体现在后续动作触发弹窗时被自动处理。

  • 处理对话框 节点运行结束后状态为成功。
  • 运行日志中没有参数缺失、超时或执行失败等错误。
  • 后续节点能够继续执行,流程没有因为该节点异常中断。
现象 / 报错原文可能原因处理建议
弹窗没有被处理,流程卡住处理对话框节点放在了触发弹窗的操作之后把「处理对话框」节点移到触发弹窗的操作之前
prompt 输入框没有填入文本未配置「提示框输入文本」,或对话框不是 prompt 类型仅 prompt 类型支持输入文本,确认类型并填写 promptText
点了取消但实际接受了acceptDialog 配置反了拒绝时设置 acceptDialogfalse

代码编排以 Python 为主。运行上下文由代码编排模板创建,示例里只需要关注业务指令本身。

# 先设置对话框处理器:接受(点确定)
bots.handleDialog(acceptDialog="true")
# 再触发会弹出确认框的操作
bots.clickElementMixed(selector="//button[text()='删除']")

拒绝对话框(点取消):

bots.handleDialog(acceptDialog="false")

处理 prompt 输入框并填入文本:

bots.handleDialog(acceptDialog="true", promptText="确认内容")

如果你想在工作流中通过节点动态编排指令,可使用 执行指令(XML)节点。

Q1:为什么要在弹窗出现前设置?

Section titled “Q1:为什么要在弹窗出现前设置?”

A: 因为处理器是注册到页面上的监听器,只能处理它注册之后弹出的对话框。所以必须先放「处理对话框」节点,再放触发弹窗的动作。

A: 支持 JS 原生对话框:alertconfirmprompt,以及离开页面前的 onbeforeunload 确认。它不处理网页自己用 HTML 画的「弹窗 DIV」,那类弹窗请用 点击元素 处理。

A: 接受相当于点「确定」;拒绝相当于点「取消」。对 prompt 接受时还会把「提示框输入文本」作为输入值提交。