 | |  |  | 启动自动百度贴吧发图片
- // AIWROK 完整自动化流程:启动百度贴吧 → 点击发帖 → 添加图片 → 选择相册图片 → 输入标题和内容 → 发布
- // 全程使用 agent 方式操作,不依赖无障碍权限
- // 包名:com.baidu.tieba(百度贴吧)
- print.log("===== 百度贴吧发图片流程启动 =====");
- print.time();
- // ========== 配置区 ==========
- var APP包名 = "com.baidu.tieba";
- var 循环次数 = 1;
- var 当前循环 = 0;
- var 发布标题列表 = [
- "分享一张图片",
- "看看这张图怎么样",
- "图片分享"
- ];
- var 发布内容列表 = [
- "分享一张有趣的图片~",
- "这张图拍得不错吧!",
- "随手拍的,大家看看~"
- ];
- var 选择图片数量 = 3;
- var 内容索引 = 0;
- // ========== 获取设备信息 ==========
- var 屏幕宽 = screen.getScreenWidth();
- var 屏幕高 = screen.getScreenHeight();
- print.log("屏幕尺寸:" + 屏幕宽 + " x " + 屏幕高);
- print.log("代理状态:" + (agent.isOpen() ? "已开启" : "未开启"));
- // ========== 工具函数 ==========
- function 获取XML() {
- var raw = agent.shell("uiautomator dump --compressed /proc/self/fd/1 2>/dev/null");
- var rawStr = "" + raw;
- var startIdx = rawStr.indexOf("<?xml");
- var endIdx = rawStr.indexOf("</hierarchy>");
- if (startIdx !== -1 && endIdx !== -1) {
- return rawStr.substring(startIdx, endIdx + 13);
- }
- return rawStr;
- }
- function 查找节点中心(xml, text) {
- var idx = ("" + xml).indexOf('text="' + text + '"');
- if (idx === -1) {
- idx = ("" + xml).indexOf("text='" + text + "'");
- }
- if (idx === -1) {
- return null;
- }
- var 后面 = ("" + xml).substring(idx);
- var m = 后面.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (!m) {
- m = 后面.match(/bounds='\[(\d+),(\d+)\]\[(\d+),(\d+)\]'/);
- }
- if (!m) {
- return null;
- }
- var x1 = parseInt(m[1]);
- var y1 = parseInt(m[2]);
- var x2 = parseInt(m[3]);
- var y2 = parseInt(m[4]);
- return {
- x: (x1 + x2) / 2,
- y: (y1 + y2) / 2
- };
- }
- function 查找输入框中心(xml, hintText) {
- var xmlStr = "" + xml;
- var editTextPattern = /<node[^>]*?class="android\.widget\.EditText"[^>]*?\/>/g;
- var match;
- while ((match = editTextPattern.exec(xmlStr)) !== null) {
- var nodeStr = match[0];
- var textMatch = nodeStr.match(/text="([^"]*)"/);
- if (!textMatch) {
- textMatch = nodeStr.match(/text='([^']*)'/);
- }
- if (textMatch && textMatch[1].indexOf(hintText) !== -1) {
- var boundsMatch = nodeStr.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (!boundsMatch) {
- boundsMatch = nodeStr.match(/bounds='\[(\d+),(\d+)\]\[(\d+),(\d+)\]'/);
- }
- if (boundsMatch) {
- var x1 = parseInt(boundsMatch[1]);
- var y1 = parseInt(boundsMatch[2]);
- var x2 = parseInt(boundsMatch[3]);
- var y2 = parseInt(boundsMatch[4]);
- return {
- x: (x1 + x2) / 2,
- y: (y1 + y2) / 2
- };
- }
- }
- }
- var textPattern = new RegExp('text="([^"]*?' + hintText + '[^"]*)"', 'g');
- while ((match = textPattern.exec(xmlStr)) !== null) {
- var afterText = xmlStr.substring(match.index);
- var boundsMatch = afterText.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (!boundsMatch) {
- boundsMatch = afterText.match(/bounds='\[(\d+),(\d+)\]\[(\d+),(\d+)\]'/);
- }
- if (boundsMatch) {
- var x1 = parseInt(boundsMatch[1]);
- var y1 = parseInt(boundsMatch[2]);
- var x2 = parseInt(boundsMatch[3]);
- var y2 = parseInt(boundsMatch[4]);
- return {
- x: (x1 + x2) / 2,
- y: (y1 + y2) / 2
- };
- }
- }
- return null;
- }
- function 查找底部导航中间按钮(xml) {
- var pattern = /<node\s[^>]*?index="3"[^>]*?class="android\.widget\.FrameLayout"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
- var match;
- while ((match = pattern.exec(xml)) !== null) {
- var x1 = parseInt(match[1]);
- var y1 = parseInt(match[2]);
- var x2 = parseInt(match[3]);
- var y2 = parseInt(match[4]);
- var centerY = (y1 + y2) / 2;
- if (centerY > 屏幕高 * 0.8) {
- return {
- x: (x1 + x2) / 2,
- y: centerY
- };
- }
- }
- var pattern2 = /NAF="true"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
- while ((match = pattern2.exec(xml)) !== null) {
- var x1 = parseInt(match[1]);
- var y1 = parseInt(match[2]);
- var x2 = parseInt(match[3]);
- var y2 = parseInt(match[4]);
- var centerX = (x1 + x2) / 2;
- var centerY = (y1 + y2) / 2;
- if (centerY > 屏幕高 * 0.85 && centerX > 屏幕宽 * 0.3 && centerX < 屏幕宽 * 0.7) {
- return {
- x: centerX,
- y: centerY
- };
- }
- }
- return null;
- }
- function 设置ADB输入法() {
- try {
- var 当前输入法 = ("" + agent.shell("settings get secure default_input_method")).trim();
- print.log("当前默认输入法:" + 当前输入法);
- var adbKeyboard = "com.android.adbkeyboard/.AdbIME";
- if (当前输入法.indexOf("adbkeyboard") === -1) {
- print.log("当前不是ADB输入法,尝试切换");
- agent.shell("ime enable " + adbKeyboard);
- sleep.millisecond(毫秒 = 300);
- agent.shell("ime set " + adbKeyboard);
- sleep.millisecond(毫秒 = 500);
- print.log("✓ 已切换到ADB输入法");
- } else {
- print.log("✓ 当前已是ADB输入法");
- }
- } catch (e) {
- print.log("⚠ 设置ADB输入法失败:" + e.message);
- print.log("提示:请手动安装ADB Keyboard并设置为默认输入法");
- }
- }
- function 输入文本(content, x, y) {
- var 粘贴成功 = false;
- agent.click(Math.floor(x), Math.floor(y));
- sleep.second(秒 = 1);
- agent.shell("service call clipboard 4 i32 1 s16 '" + content + "' i32 0");
- sleep.millisecond(毫秒 = 300);
- agent.shell("service call clipboard 3 i32 1 s16 '" + content + "' i32 0");
- sleep.millisecond(毫秒 = 300);
- Clipboard.copy(content);
- sleep.millisecond(毫秒 = 300);
- print.log("✓ 剪贴板已设置内容");
- agent.shell("input keyevent 279");
- sleep.second(秒 = 1);
- var xmlA = 获取XML();
- if (xmlA.indexOf(content.substring(0, 2)) !== -1) {
- 粘贴成功 = true;
- print.log("✓ KEYCODE_PASTE 粘贴成功");
- }
- if (!粘贴成功) {
- agent.shell("input keyevent 50 --meta 0x1000");
- sleep.second(秒 = 1);
- var xmlB = 获取XML();
- if (xmlB.indexOf(content.substring(0, 2)) !== -1) {
- 粘贴成功 = true;
- print.log("✓ Ctrl+V 粘贴成功");
- }
- }
- if (!粘贴成功) {
- var 长按命令 = "input swipe " + Math.floor(x) + " " + Math.floor(y) + " " + (Math.floor(x) + 1) + " " + (Math.floor(y) + 1) + " 2000";
- agent.shell(长按命令);
- sleep.second(秒 = 2);
- var xmlC = 获取XML();
- var 关键词 = ["粘贴", "Paste", "paste"];
- for (var i = 0; i < 关键词.length; i++) {
- if (xmlC.indexOf(关键词[i]) !== -1) {
- var 后面 = xmlC.substring(xmlC.indexOf(关键词[i]));
- var m = 后面.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (!m) {
- m = 后面.match(/bounds='\[(\d+),(\d+)\]\[(\d+),(\d+)\]'/);
- }
- if (m) {
- var cx = (parseInt(m[1]) + parseInt(m[3])) / 2;
- var cy = (parseInt(m[2]) + parseInt(m[4])) / 2;
- agent.click(cx, cy);
- 粘贴成功 = true;
- print.log("✓ 长按粘贴成功");
- break;
- }
- }
- }
- }
- if (!粘贴成功) {
- print.log("✗ 所有粘贴方式均未成功");
- }
- return 粘贴成功;
- }
- function 查找完成按钮(xml) {
- var xmlStr = "" + xml;
- var pattern = /class="android\.view\.View"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
- var match;
- var 候选列表 = [];
-
- while ((match = pattern.exec(xmlStr)) !== null) {
- var x1 = parseInt(match[1]);
- var y1 = parseInt(match[2]);
- var x2 = parseInt(match[3]);
- var y2 = parseInt(match[4]);
- if (y1 > 屏幕高 * 0.9) {
- var 节点片段 = xmlStr.substring(match.index, match.index + 200);
- var 可用 = 节点片段.indexOf("enabled=\"true\"") !== -1 || 节点片段.indexOf("enabled='true'") !== -1;
- 候选列表.push({
- x1: x1, y1: y1, x2: x2, y2: y2,
- enabled: 可用,
- x: (x1 + x2) / 2,
- y: (y1 + y2) / 2
- });
- }
- }
- 候选列表.sort(function(a, b) {
- return b.x1 - a.x1;
- });
- for (var i = 0; i < 候选列表.length; i++) {
- if (候选列表[i].enabled) {
- return {
- x: 候选列表[i].x,
- y: 候选列表[i].y
- };
- }
- }
- if (候选列表.length > 0) {
- return {
- x: 候选列表[0].x,
- y: 候选列表[0].y
- };
- }
- return null;
- }
- function 查找选择吧区域(xml) {
- var xmlStr = "" + xml;
- var pattern = /class="android\.widget\.RelativeLayout"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
- var match;
- while ((match = pattern.exec(xmlStr)) !== null) {
- var x1 = parseInt(match[1]);
- var y1 = parseInt(match[2]);
- var x2 = parseInt(match[3]);
- var y2 = parseInt(match[4]);
- if (y1 > 300 && y2 < 600 && x2 - x1 > 500) {
- var 节点片段 = xmlStr.substring(match.index, match.index + 500);
- if (节点片段.indexOf("选择吧") !== -1) {
- return {
- x: (x1 + x2) / 2,
- y: (y1 + y2) / 2
- };
- }
- }
- }
- return null;
- }
- function 查找第一个吧(xml) {
- var xmlStr = "" + xml;
- var pattern = /class="android\.widget\.LinearLayout"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
- var match;
- var 候选列表 = [];
- while ((match = pattern.exec(xmlStr)) !== null) {
- var x1 = parseInt(match[1]);
- var y1 = parseInt(match[2]);
- var x2 = parseInt(match[3]);
- var y2 = parseInt(match[4]);
- if (y1 > 800 && y2 - y1 > 200) {
- var 节点片段 = xmlStr.substring(match.index, match.index + 300);
- if (节点片段.indexOf('clickable="true"') !== -1 || 节点片段.indexOf("clickable='true'") !== -1) {
- 候选列表.push({
- x: (x1 + x2) / 2,
- y: (y1 + y2) / 2,
- top: y1
- });
- }
- }
- }
- 候选列表.sort(function(a, b) {
- return a.top - b.top;
- });
- if (候选列表.length > 0) {
- return 候选列表[0];
- }
- return null;
- }
- function 选择相册图片(数量) {
- print.log("准备从相册选择 " + 数量 + " 张图片");
- var 已选 = 0;
- var 开始时间 = Date.now();
- while (已选 < 数量 && Date.now() - 开始时间 < 30000) {
- try {
- var xml = 获取XML();
- if (xml.indexOf("相机胶卷") === -1) {
- print.log("⚠ 未检测到相册页面,等待...");
- sleep.second(秒 = 2);
- continue;
- }
- var 复选框列表 = [];
- var descIndex = xml.indexOf('content-desc="复选框未选中"');
- while (descIndex !== -1) {
- var 后面 = xml.substring(descIndex);
- var boundsM = 后面.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (boundsM) {
- var left = parseInt(boundsM[1]);
- var top = parseInt(boundsM[2]);
- var right = parseInt(boundsM[3]);
- var bottom = parseInt(boundsM[4]);
- var width = right - left;
- var height = bottom - top;
- if (width > 50 && height > 50) {
- 复选框列表.push({
- centerX: (left + right) / 2,
- centerY: (top + bottom) / 2,
- left: left,
- top: top
- });
- }
- }
- descIndex = xml.indexOf('content-desc="复选框未选中"', descIndex + 20);
- }
- 复选框列表.sort(function(a, b) {
- if (Math.abs(a.top - b.top) < 50) {
- return a.left - b.left;
- }
- return a.top - b.top;
- });
- print.log("找到 " + 复选框列表.length + " 个复选框");
- if (复选框列表.length > 已选) {
- var 目标节点 = 复选框列表[已选];
- agent.click(Math.floor(目标节点.centerX), Math.floor(目标节点.centerY));
- print.log("✓ 已选中第 " + (已选 + 1) + " 张图片 (" + Math.floor(目标节点.centerX) + ", " + Math.floor(目标节点.centerY) + ")");
- 已选++;
- sleep.second(秒 = 1);
- } else {
- print.log("⚠ 复选框不足,尝试点击图片区域...");
- var 图片列表 = [];
- var classIndex = xml.indexOf('class="android.widget.RelativeLayout"');
- while (classIndex !== -1) {
- var 后面 = xml.substring(classIndex);
- var boundsM = 后面.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
- if (boundsM) {
- var left = parseInt(boundsM[1]);
- var top = parseInt(boundsM[2]);
- var right = parseInt(boundsM[3]);
- var bottom = parseInt(boundsM[4]);
- var width = right - left;
- var height = bottom - top;
- if (width > 100 && height > 100 && top > 500) {
- 图片列表.push({
- centerX: (left + right) / 2,
- centerY: (top + bottom) / 2,
- left: left,
- top: top
- });
- }
- }
- classIndex = xml.indexOf('class="android.widget.RelativeLayout"', classIndex + 35);
- }
- 图片列表.sort(function(a, b) {
- if (Math.abs(a.top - b.top) < 50) {
- return a.left - b.left;
- }
- return a.top - b.top;
- });
- if (图片列表.length > 已选) {
- var 目标图片 = 图片列表[已选];
- agent.click(Math.floor(目标图片.centerX), Math.floor(目标图片.centerY));
- print.log("✓ 已点击第 " + (已选 + 1) + " 张图片区域 (" + Math.floor(目标图片.centerX) + ", " + Math.floor(目标图片.centerY) + ")");
- 已选++;
- sleep.second(秒 = 1);
- } else {
- print.log("⚠ 图片不足,等待加载...");
- sleep.second(秒 = 2);
- }
- }
- } catch (e) {
- print.log("⚠ 选择第 " + (已选 + 1) + " 张图片失败:" + e.message);
- sleep.second(秒 = 1);
- }
- }
- print.log("共选中 " + 已选 + " 张图片");
- return 已选;
- }
- // ========================================
- // 主循环开始
- // ========================================
- for (当前循环 = 1; 循环次数 == 0 || 当前循环 <= 循环次数; 当前循环++) {
- if (循环次数 > 0) {
- print.log("\n======================================");
- print.log("===== 第 " + 当前循环 + " / " + 循环次数 + " 次循环 =====");
- print.log("======================================");
- } else {
- print.log("\n======================================");
- print.log("===== 第 " + 当前循环 + " 次循环(无限模式)=====");
- print.log("======================================");
- }
- var 发布标题 = 发布标题列表[内容索引 % 发布标题列表.length];
- var 发布内容 = 发布内容列表[内容索引 % 发布内容列表.length];
- 内容索引++;
- print.log("本次发布标题:" + 发布标题);
- print.log("本次发布内容:" + 发布内容);
- // ========================================
- // 步骤1:启动百度贴吧
- // ========================================
- print.log("\n========== 步骤1:启动百度贴吧 ==========");
- try {
- app.openApp(APP包名);
- print.log("✓ 已启动百度贴吧");
- } catch (e) {
- print.log("✗ 启动失败:" + e.message);
- }
- sleep.second(秒 = 5);
- // ========================================
- // 步骤2:设置ADB输入法(支持中文输入)
- // ========================================
- print.log("\n========== 步骤2:设置ADB输入法 ==========");
- 设置ADB输入法();
- // ========================================
- // 步骤3:点击底部导航中间的加号按钮
- // ========================================
- print.log("\n========== 步骤3:点击底部导航中间的加号按钮 ==========");
- var 加号按钮点击成功 = false;
- for (var i = 0; i < 5; i++) {
- var xml2 = 获取XML();
- print.log(" 正在扫描界面...");
- var 加号按钮位置 = 查找底部导航中间按钮(xml2);
- if (加号按钮位置) {
- print.log(" ✓ 找到底部导航中间按钮:(" + Math.floor(加号按钮位置.x) + ", " + Math.floor(加号按钮位置.y) + ")");
- agent.click(Math.floor(加号按钮位置.x), Math.floor(加号按钮位置.y));
- 加号按钮点击成功 = true;
- sleep.second(秒 = 3);
- var xml2b = 获取XML();
- var 添加图片选项位置 = 查找节点中心(xml2b, "添加图片");
- if (添加图片选项位置) {
- print.log(" ✓ 找到添加图片选项");
- agent.click(Math.floor(添加图片选项位置.x), Math.floor(添加图片选项位置.y));
- print.log("✓ 已进入添加图片页面");
- }
- break;
- }
- sleep.second(秒 = 2);
- }
- if (!加号按钮点击成功) {
- print.log("⚠ 未找到加号按钮,使用百分比坐标");
- agent.clickPercent(0.5, 0.96);
- sleep.second(秒 = 3);
- var xml2c = 获取XML();
- var 添加图片选项位置 = 查找节点中心(xml2c, "添加图片");
- if (添加图片选项位置) {
- print.log(" ✓ 找到添加图片选项");
- agent.click(Math.floor(添加图片选项位置.x), Math.floor(添加图片选项位置.y));
- print.log("✓ 已进入添加图片页面");
- }
- }
- // ========================================
- // 步骤4:等待进入相册页面
- // ========================================
- print.log("\n========== 步骤4:等待进入相册页面 ==========");
- var 相册进入成功 = false;
- for (var j = 0; j < 5; j++) {
- var xml3 = 获取XML();
- if (xml3.indexOf("相机胶卷") !== -1) {
- print.log("✓ 已进入相册页面(相机胶卷)");
- 相册进入成功 = true;
- break;
- }
- var 从相册选择位置 = 查找节点中心(xml3, "从相册选择");
- if (从相册选择位置) {
- print.log(" ✓ 找到从相册选择:(" + Math.floor(从相册选择位置.x) + ", " + Math.floor(从相册选择位置.y) + ")");
- agent.click(Math.floor(从相册选择位置.x), Math.floor(从相册选择位置.y));
- 相册进入成功 = true;
- sleep.second(秒 = 3);
- break;
- }
- var 相册位置 = 查找节点中心(xml3, "相册");
- if (相册位置) {
- print.log(" ✓ 找到相册:(" + Math.floor(相册位置.x) + ", " + Math.floor(相册位置.y) + ")");
- agent.click(Math.floor(相册位置.x), Math.floor(相册位置.y));
- 相册进入成功 = true;
- sleep.second(秒 = 3);
- break;
- }
- sleep.second(秒 = 2);
- }
- if (!相册进入成功) {
- print.log("⚠ 未进入相册页面");
- }
- // ========================================
- // 步骤5:从相册选择图片
- // ========================================
- print.log("\n========== 步骤5:从相册选择图片 ==========");
- try {
- 选择相册图片(选择图片数量);
- } catch (e) {
- print.log("⚠ 选择图片失败:" + e.message);
- }
- sleep.second(秒 = 2);
- // ========================================
- // 步骤6:点击"完成"按钮(等待按钮变为可用)
- // ========================================
- print.log("\n========== 步骤6:点击完成按钮 ==========");
- var 完成成功 = false;
- var 开始时间 = Date.now();
- while (!完成成功 && Date.now() - 开始时间 < 15000) {
- var xml4 = 获取XML();
- var 完成按钮位置 = 查找完成按钮(xml4);
- if (完成按钮位置) {
- print.log(" ✓ 找到完成按钮:(" + Math.floor(完成按钮位置.x) + ", " + Math.floor(完成按钮位置.y) + ")");
- agent.click(Math.floor(完成按钮位置.x), Math.floor(完成按钮位置.y));
- 完成成功 = true;
- sleep.second(秒 = 3);
- break;
- }
- sleep.second(秒 = 1);
- }
- if (!完成成功) {
- print.log("⚠ 未找到完成按钮,尝试点击底部右侧区域");
- agent.clickPercent(0.85, 0.96);
- sleep.second(秒 = 3);
- }
- // ========================================
- // 步骤7:选择吧
- // ========================================
- print.log("\n========== 步骤7:选择吧 ==========");
- var 选择吧完成 = false;
- var 已经点击选择吧 = false;
- for (var l = 0; l < 5; l++) {
- var xml5 = 获取XML();
- if (xml5.indexOf("最近逛的吧") !== -1 || xml5.indexOf("关注的吧") !== -1) {
- var 第一个吧位置 = 查找第一个吧(xml5);
- if (第一个吧位置) {
- print.log(" ✓ 选择列表中第一个吧:(" + Math.floor(第一个吧位置.x) + ", " + Math.floor(第一个吧位置.y) + ")");
- agent.click(Math.floor(第一个吧位置.x), Math.floor(第一个吧位置.y));
- sleep.second(秒 = 3);
- 选择吧完成 = true;
- break;
- }
- } else if (xml5.indexOf("发布贴子") !== -1) {
- var 选择吧区域 = 查找选择吧区域(xml5);
- var 选择吧位置 = 查找节点中心(xml5, "选择吧");
- if (选择吧区域) {
- print.log(" ✓ 找到选择吧区域:(" + Math.floor(选择吧区域.x) + ", " + Math.floor(选择吧区域.y) + ")");
- agent.click(Math.floor(选择吧区域.x), Math.floor(选择吧区域.y));
- sleep.second(秒 = 3);
- } else if (选择吧位置) {
- print.log(" ✓ 找到选择吧:(" + Math.floor(选择吧位置.x) + ", " + Math.floor(选择吧位置.y) + ")");
- agent.click(Math.floor(选择吧位置.x), Math.floor(选择吧位置.y));
- sleep.second(秒 = 3);
- } else {
- print.log("✓ 已选吧或无需选择吧");
- 选择吧完成 = true;
- break;
- }
- } else {
- print.log("✓ 已在发布页面(可能已选吧)");
- 选择吧完成 = true;
- break;
- }
- sleep.second(秒 = 2);
- }
- if (!选择吧完成) {
- print.log("⚠ 跳过选择吧步骤");
- }
- // ========================================
- // 步骤8:输入标题
- // ========================================
- print.log("\n========== 步骤8:输入标题 ==========");
- var 标题输入成功 = false;
- for (var m = 0; m < 5; m++) {
- var xml6 = 获取XML();
- var 标题输入框位置 = 查找输入框中心(xml6, "请输入完整贴子标题");
- if (!标题输入框位置) {
- 标题输入框位置 = 查找输入框中心(xml6, "完整贴子标题");
- }
- if (!标题输入框位置) {
- 标题输入框位置 = 查找输入框中心(xml6, "标题");
- }
- if (标题输入框位置) {
- print.log(" ✓ 找到标题输入框:(" + Math.floor(标题输入框位置.x) + ", " + Math.floor(标题输入框位置.y) + ")");
- var 粘贴结果 = 输入文本(发布标题, 标题输入框位置.x, 标题输入框位置.y);
- if (粘贴结果) {
- print.log("✓ 标题输入成功");
- 标题输入成功 = true;
- } else {
- print.log("✗ 标题输入失败");
- }
- break;
- }
- sleep.second(秒 = 2);
- }
- if (!标题输入成功) {
- print.log("✗ 标题输入失败");
- }
- // ========================================
- // 步骤9:输入内容
- // ========================================
- print.log("\n========== 步骤9:输入内容 ==========");
- var 内容输入成功 = false;
- for (var n = 0; n < 5; n++) {
- var xml7 = 获取XML();
- var 内容输入框位置 = 查找输入框中心(xml7, "来吧,尽情发挥吧");
- if (!内容输入框位置) {
- 内容输入框位置 = 查找输入框中心(xml7, "尽情发挥");
- }
- if (!内容输入框位置) {
- 内容输入框位置 = 查找输入框中心(xml7, "请输入内容");
- }
- if (内容输入框位置) {
- print.log(" ✓ 找到内容输入框:(" + Math.floor(内容输入框位置.x) + ", " + Math.floor(内容输入框位置.y) + ")");
- var 粘贴结果 = 输入文本(发布内容, 内容输入框位置.x, 内容输入框位置.y);
- if (粘贴结果) {
- print.log("✓ 内容输入成功");
- 内容输入成功 = true;
- } else {
- print.log("✗ 内容输入失败");
- }
- break;
- }
- sleep.second(秒 = 2);
- }
- if (!内容输入成功) {
- print.log("✗ 内容输入失败");
- }
- // ========================================
- // 步骤10:点击发布
- // ========================================
- print.log("\n========== 步骤10:点击发布 ==========");
- var 发布成功 = false;
- for (var p = 0; p < 5; p++) {
- var xml8 = 获取XML();
- var 发布按钮位置 = 查找节点中心(xml8, "发布");
- if (发布按钮位置) {
- print.log(" ✓ 找到发布按钮:(" + Math.floor(发布按钮位置.x) + ", " + Math.floor(发布按钮位置.y) + ")");
- agent.click(Math.floor(发布按钮位置.x), Math.floor(发布按钮位置.y));
- sleep.second(秒 = 3);
- var xml8b = 获取XML();
- if (xml8b.indexOf("发布成功") !== -1 || xml8b.indexOf("帖子已发布") !== -1) {
- print.log("✓ 帖子发布成功");
- 发布成功 = true;
- } else if (xml8b.indexOf("发布贴子") === -1) {
- print.log("✓ 已离开发布页面,发布流程完成");
- 发布成功 = true;
- } else {
- print.log("⚠ 发布按钮点击后页面未变化");
- }
- break;
- }
- sleep.second(秒 = 2);
- }
- if (!发布成功) {
- print.log("✗ 发布失败");
- }
- // ========================================
- // 步骤11:关闭APP
- // ========================================
- print.log("\n========== 步骤11:关闭APP ==========");
- try {
- agent.shell("am force-stop " + APP包名);
- print.log("✓ 已关闭百度贴吧");
- } catch (e) {
- print.log("⚠ 关闭APP失败:" + e.message);
- }
- sleep.second(秒 = 3);
- // ========================================
- // 循环间隔
- // ========================================
- if (循环次数 == 0 || 当前循环 < 循环次数) {
- print.log("\n========== 等待下一次循环 ==========");
- sleep.second(秒 = 5);
- }
- }
- // ========================================
- // 结果汇总
- // ========================================
- print.timeEnd();
- print.log("\n======================================");
- print.log("===== 所有循环执行完成 =====");
- if (循环次数 > 0) {
- print.log("总计执行:" + 循环次数 + " 次");
- } else {
- print.log("无限循环模式,已执行:" + (当前循环 - 1) + " 次");
- }
- print.log("======================================");
复制代码
| |  | |  |
|