番茄小说APP自动搜索书籍

vcxk47vrt9 · 6 小时前

回答

Hamibot AI
1
· 6 小时前

实现番茄小说 APP 的自动搜索功能,主要依赖 Hamibot 的 UI 自动化能力。你需要通过选择器定位搜索框、输入关键词并点击搜索按钮。以下是具体的实现方案和脚本示例。

核心步骤

  1. 权限准备:确保设备已开启无障碍服务,Hamibot 拥有相关权限。
  2. 启动应用:使用 launchApp 打开番茄小说。
  3. 定位元素:使用选择器(如 text, className, id)找到搜索入口和输入框。
  4. 执行操作:模拟点击和文本输入。
  5. 异常处理:增加等待时间和判断逻辑,防止因页面加载慢导致脚本报错。

脚本示例

请在 Hamibot 编辑器中创建新脚本,并将以下代码粘贴进去。注意代码开头的注释要求。

// 文档地址 https://docs.hamibot.com/
// 番茄小说自动搜索书籍脚本示例

auto.waitFor(); // 等待无障碍服务开启
log("开始执行番茄小说搜索任务");

// 启动番茄小说 APP
launchApp("番茄小说");

// 等待首页加载完成,这里假设首页有一个包含“搜索”字样的控件
// 实际使用时建议使用 Hamibot Studio 查看具体的资源 ID 或文本
var searchBtn = textContains("搜索").findOne(10000); 

if (searchBtn != null) {
    log("找到搜索按钮,正在点击");
    searchBtn.click();
    
    // 等待搜索框出现
    var searchInput = className("android.widget.EditText").findOne(5000);
    
    if (searchInput != null) {
        log("找到输入框,准备输入书名");
        // 清空可能存在的默认文字
        searchInput.setText(""); 
        // 输入你想搜索的书名,例如“斗罗大陆”
        var bookName = "斗罗大陆";
        searchInput.setText(bookName);
        
        // 寻找搜索确认按钮,通常是放大镜图标或“搜索”文字
        var confirmBtn = text("搜索").findOne(3000);
        if (confirmBtn == null) {
            // 如果没找到文字搜索,尝试找描述为搜索的图标
            confirmBtn = desc("搜索").findOne(3000);
        }
        
        if (confirmBtn != null) {
            log("找到搜索确认按钮,正在点击");
            confirmBtn.click();
            log("搜索指令已发送");
        } else {
            log("未找到搜索确认按钮,请检查界面元素");
        }
    } else {
        log("未找到输入框,可能是弹窗遮挡或版本更新");
    }
} else {
    log("未在首页找到搜索入口,请检查 APP 版本或网络状态");
}

log("任务结束");

关键注意事项

  1. 选择器适配

    • 不同版本的番茄小说 APP,其界面元素(ID、Text、Class)可能会发生变化。上述脚本中的 textContains("搜索")className("android.widget.EditText") 可能需要根据实际抓包结果调整。
    • 推荐使用 Hamibot 自带的 Hamibot Studio 工具连接手机,实时查看当前界面的控件属性,获取更精准的 iddesc
  2. 兼容性限制

    • Hamibot 使用的 JavaScript 引擎是 Rhino 1.7.15,不完全兼容最新 ES6 语法。
    • 禁止使用箭头函数(如 () => {}),请使用标准 function 定义。
    • 禁止使用默认参数(如 function(a = 1))。
    • 变量声明建议使用 var,避免使用 letconst 以防在某些旧环境下报错。
  3. 稳定性优化

    • 在点击操作前适当增加 sleep(1000) 或使用 waitFor() 方法,给 APP 留出渲染时间。
    • 如果遇到广告弹窗干扰搜索结果,可以在脚本中加入关闭广告的逻辑(例如查找“跳过”或“关闭”按钮并点击)。
  4. 窗口过滤

    • 如果你是在分屏模式下运行,或者有其他悬浮窗干扰,可以使用 auto.setWindowFilter 来限定搜索范围仅在番茄小说窗口内。
    • 示例:auto.setWindowFilter(function (window) { return window.title == '番茄小说'; });

最佳实践建议

  • 调试模式:先在模拟器或小屏设备上测试脚本,确保选择器准确无误后再部署到生产环境。
  • 日志记录:保留 log 语句,方便在控制台查看脚本执行到哪一步出错。
  • 动态配置:将搜索的书名提取为变量,方便后续修改而不必改动核心逻辑。

如果在运行过程中遇到具体的报错信息或无法定位元素的情况,可以提供具体的错误日志,以便进一步分析。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实