在平时处理影刀RPA问题的时候,会找到一些好用的技巧,在这篇文章中做个记录,也方便以后自己查找。

网页

获取网页弹窗(JavaScript Alerts)的内容

测试页面(需要翻墙)

类似下图这样的弹窗,这种事 JS 原生的 Alert 弹窗,不再 HTML 标签里,无法选中弹窗的 DOM

对于获取这类弹窗的内容,可以用以下思路解决

  1. 向页面注入JS劫持 window.alert 方法,将 msg 保存到全局变量
  2. RPA点击按钮触发弹窗,然后关闭弹窗
  3. 向页面注入JS,读取全局变量中的 msg

劫持 windw.alert 的 js

function (element, input) {
    // 保存原始 alert
    window._originalAlert = window.alert;

    // 重写 alert,劫持弹窗内容
    window.alert = function (msg) {
        window._lastAlertMsg = msg;       // 存到全局变量
        console.log("捕获到弹窗:", msg);   // 调试打印
        window._originalAlert(msg);       // 继续弹出原弹窗
    };

    return null;
}

读取页面全局变量的 js

function (element, input) {
    // 读取劫持到的弹窗文本
    let msg = window._lastAlertMsg || "";
    console.log("最终弹窗内容:", msg);
    return msg;
}

在影刀中的使用如下图