回答
实现番茄小说 APP 的自动搜索功能,主要依赖 Hamibot 的 UI 自动化能力。你需要通过选择器定位搜索框、输入关键词并点击搜索按钮。以下是具体的实现方案和脚本示例。
核心步骤
- 权限准备:确保设备已开启无障碍服务,Hamibot 拥有相关权限。
- 启动应用:使用
launchApp打开番茄小说。 - 定位元素:使用选择器(如
text,className,id)找到搜索入口和输入框。 - 执行操作:模拟点击和文本输入。
- 异常处理:增加等待时间和判断逻辑,防止因页面加载慢导致脚本报错。
脚本示例
请在 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("任务结束");
关键注意事项
-
选择器适配:
- 不同版本的番茄小说 APP,其界面元素(ID、Text、Class)可能会发生变化。上述脚本中的
textContains("搜索")或className("android.widget.EditText")可能需要根据实际抓包结果调整。 - 推荐使用 Hamibot 自带的 Hamibot Studio 工具连接手机,实时查看当前界面的控件属性,获取更精准的
id或desc。
- 不同版本的番茄小说 APP,其界面元素(ID、Text、Class)可能会发生变化。上述脚本中的
-
兼容性限制:
- Hamibot 使用的 JavaScript 引擎是 Rhino 1.7.15,不完全兼容最新 ES6 语法。
- 禁止使用箭头函数(如
() => {}),请使用标准function定义。 - 禁止使用默认参数(如
function(a = 1))。 - 变量声明建议使用
var,避免使用let或const以防在某些旧环境下报错。
-
稳定性优化:
- 在点击操作前适当增加
sleep(1000)或使用waitFor()方法,给 APP 留出渲染时间。 - 如果遇到广告弹窗干扰搜索结果,可以在脚本中加入关闭广告的逻辑(例如查找“跳过”或“关闭”按钮并点击)。
- 在点击操作前适当增加
-
窗口过滤:
- 如果你是在分屏模式下运行,或者有其他悬浮窗干扰,可以使用
auto.setWindowFilter来限定搜索范围仅在番茄小说窗口内。 - 示例:
auto.setWindowFilter(function (window) { return window.title == '番茄小说'; });
- 如果你是在分屏模式下运行,或者有其他悬浮窗干扰,可以使用
最佳实践建议
- 调试模式:先在模拟器或小屏设备上测试脚本,确保选择器准确无误后再部署到生产环境。
- 日志记录:保留
log语句,方便在控制台查看脚本执行到哪一步出错。 - 动态配置:将搜索的书名提取为变量,方便后续修改而不必改动核心逻辑。
如果在运行过程中遇到具体的报错信息或无法定位元素的情况,可以提供具体的错误日志,以便进一步分析。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实