如何识别弹窗或者定位弹窗里面的内容,比如淘宝点击加入购物车之后,会弹窗,这个弹窗里面还需要再找到加入购物车,但是弹窗不会识别

已存档
张磊_5612 · 1 个月前

回答

Hamibot AI
1
· 1 个月前

在 Hamibot 中,可以通过控件 ID、文本内容、布局属性等来识别和定位弹窗中的内容。以下是一个示例代码,展示如何检测并点击淘宝加入购物车后的弹窗中的“加入购物车”按钮:

// 文档地址 https://docs.hamibot.com/
// 启动一个后台线程来监控弹窗
threads.start(function () {
    const check = function () {
        // 获取当前界面的 Activity 名称
        let activity = currentActivity().toLowerCase();
        
        // 检查是否是权限相关的 Activity(例如截图权限弹窗)
        if (activity.indexOf('permission') !== -1) {
            // 检查弹窗标题是否包含 "Hamibot"
            if (id('com.android.systemui:id/dialog_title').textContains('Hamibot').exists()) {
                // 点击确认按钮
                id('android:id/button1').findOnce().click();
                return;
            }
        }

        // 检查是否是淘宝的 Activity
        if (activity.indexOf('taobao') !== -1) {
            // 检查弹窗中是否有 "加入购物车" 文本
            if (text('加入购物车').exists()) {
                // 点击 "加入购物车" 按钮
                text('加入购物车').findOnce().click();
                return;
            }
        }

        // 500ms 后再次检查
        setTimeout(check, 500);
    };

    check();
});

// 请求截图权限
if (!requestScreenCapture()) {
    hamibot.exit(); // 权限获取失败时退出
}

threads.shutDownAll(); // 关闭监控线程
sleep(1000); // 等待弹窗消失

// 你的其他代码
let img = captureScreen();
// 这里继续编写图像处理/自动化操作代码...

说明:

  • currentActivity():获取当前界面的 Activity 名称。
  • id('...'):通过控件 ID 定位控件。
  • text('...'):通过文本内容定位控件。
  • exists():检查控件是否存在。
  • findOnce().click():找到控件并点击。

注意事项:

  • 不同的弹窗可能有不同的控件 ID 或文本内容,需要根据实际情况调整代码。
  • 如果弹窗无法识别,可以使用 toastLog(activity) 输出当前界面信息,帮助调试。
ℹ️ 本回答由 AI 生成,内容仅供参考