信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 1|回复: 0
打印 上一主题 下一主题

[宣传软件网站动态] 启动自动百度贴吧发图片

[复制链接]

787

主题

871

帖子

5584

积分

积分
5584

资讯缩略图:

资讯发布日期:2026-07-10

资讯发布简介:启动自动百度贴吧发图片

资讯关键词:启动自动百度贴吧发图片

资讯所属分类:IT资讯 SEO资讯 

联系:

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件网站分类目录 网址:http://www.postbbs.com/

资讯详细描述
启动自动百度贴吧发图片
启动自动百度贴吧发图片 b2b软件
  1. // AIWROK 完整自动化流程:启动百度贴吧 → 点击发帖 → 添加图片 → 选择相册图片 → 输入标题和内容 → 发布
  2. // 全程使用 agent 方式操作,不依赖无障碍权限
  3. // 包名:com.baidu.tieba(百度贴吧)

  4. print.log("===== 百度贴吧发图片流程启动 =====");
  5. print.time();

  6. // ========== 配置区 ==========
  7. var APP包名 = "com.baidu.tieba";

  8. var 循环次数 = 1;
  9. var 当前循环 = 0;

  10. var 发布标题列表 = [
  11.     "分享一张图片",
  12.     "看看这张图怎么样",
  13.     "图片分享"
  14. ];

  15. var 发布内容列表 = [
  16.     "分享一张有趣的图片~",
  17.     "这张图拍得不错吧!",
  18.     "随手拍的,大家看看~"
  19. ];

  20. var 选择图片数量 = 3;

  21. var 内容索引 = 0;

  22. // ========== 获取设备信息 ==========
  23. var 屏幕宽 = screen.getScreenWidth();
  24. var 屏幕高 = screen.getScreenHeight();
  25. print.log("屏幕尺寸:" + 屏幕宽 + " x " + 屏幕高);
  26. print.log("代理状态:" + (agent.isOpen() ? "已开启" : "未开启"));

  27. // ========== 工具函数 ==========
  28. function 获取XML() {
  29.     var raw = agent.shell("uiautomator dump --compressed /proc/self/fd/1 2>/dev/null");
  30.     var rawStr = "" + raw;
  31.     var startIdx = rawStr.indexOf("<?xml");
  32.     var endIdx = rawStr.indexOf("</hierarchy>");
  33.     if (startIdx !== -1 && endIdx !== -1) {
  34.         return rawStr.substring(startIdx, endIdx + 13);
  35.     }
  36.     return rawStr;
  37. }

  38. function 查找节点中心(xml, text) {
  39.     var idx = ("" + xml).indexOf('text="' + text + '"');
  40.     if (idx === -1) {
  41.         idx = ("" + xml).indexOf("text='" + text + "'");
  42.     }
  43.     if (idx === -1) {
  44.         return null;
  45.     }
  46.     var 后面 = ("" + xml).substring(idx);
  47.     var m = 后面.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  48.     if (!m) {
  49.         m = 后面.match(/bounds='\[(\d+),(\d+)\]\[(\d+),(\d+)\]'/);
  50.     }
  51.     if (!m) {
  52.         return null;
  53.     }
  54.     var x1 = parseInt(m[1]);
  55.     var y1 = parseInt(m[2]);
  56.     var x2 = parseInt(m[3]);
  57.     var y2 = parseInt(m[4]);
  58.     return {
  59.         x: (x1 + x2) / 2,
  60.         y: (y1 + y2) / 2
  61.     };
  62. }

  63. function 查找输入框中心(xml, hintText) {
  64.     var xmlStr = "" + xml;

  65.     var editTextPattern = /<node[^>]*?class="android\.widget\.EditText"[^>]*?\/>/g;
  66.     var match;
  67.     while ((match = editTextPattern.exec(xmlStr)) !== null) {
  68.         var nodeStr = match[0];
  69.         var textMatch = nodeStr.match(/text="([^"]*)"/);
  70.         if (!textMatch) {
  71.             textMatch = nodeStr.match(/text='([^']*)'/);
  72.         }
  73.         if (textMatch && textMatch[1].indexOf(hintText) !== -1) {
  74.             var boundsMatch = nodeStr.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  75.             if (!boundsMatch) {
  76.                 boundsMatch = nodeStr.match(/bounds='\[(\d+),(\d+)\]\[(\d+),(\d+)\]'/);
  77.             }
  78.             if (boundsMatch) {
  79.                 var x1 = parseInt(boundsMatch[1]);
  80.                 var y1 = parseInt(boundsMatch[2]);
  81.                 var x2 = parseInt(boundsMatch[3]);
  82.                 var y2 = parseInt(boundsMatch[4]);
  83.                 return {
  84.                     x: (x1 + x2) / 2,
  85.                     y: (y1 + y2) / 2
  86.                 };
  87.             }
  88.         }
  89.     }

  90.     var textPattern = new RegExp('text="([^"]*?' + hintText + '[^"]*)"', 'g');
  91.     while ((match = textPattern.exec(xmlStr)) !== null) {
  92.         var afterText = xmlStr.substring(match.index);
  93.         var boundsMatch = afterText.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  94.         if (!boundsMatch) {
  95.             boundsMatch = afterText.match(/bounds='\[(\d+),(\d+)\]\[(\d+),(\d+)\]'/);
  96.         }
  97.         if (boundsMatch) {
  98.             var x1 = parseInt(boundsMatch[1]);
  99.             var y1 = parseInt(boundsMatch[2]);
  100.             var x2 = parseInt(boundsMatch[3]);
  101.             var y2 = parseInt(boundsMatch[4]);
  102.             return {
  103.                 x: (x1 + x2) / 2,
  104.                 y: (y1 + y2) / 2
  105.             };
  106.         }
  107.     }

  108.     return null;
  109. }

  110. function 查找底部导航中间按钮(xml) {
  111.     var pattern = /<node\s[^>]*?index="3"[^>]*?class="android\.widget\.FrameLayout"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
  112.     var match;
  113.     while ((match = pattern.exec(xml)) !== null) {
  114.         var x1 = parseInt(match[1]);
  115.         var y1 = parseInt(match[2]);
  116.         var x2 = parseInt(match[3]);
  117.         var y2 = parseInt(match[4]);
  118.         var centerY = (y1 + y2) / 2;
  119.         if (centerY > 屏幕高 * 0.8) {
  120.             return {
  121.                 x: (x1 + x2) / 2,
  122.                 y: centerY
  123.             };
  124.         }
  125.     }

  126.     var pattern2 = /NAF="true"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
  127.     while ((match = pattern2.exec(xml)) !== null) {
  128.         var x1 = parseInt(match[1]);
  129.         var y1 = parseInt(match[2]);
  130.         var x2 = parseInt(match[3]);
  131.         var y2 = parseInt(match[4]);
  132.         var centerX = (x1 + x2) / 2;
  133.         var centerY = (y1 + y2) / 2;
  134.         if (centerY > 屏幕高 * 0.85 && centerX > 屏幕宽 * 0.3 && centerX < 屏幕宽 * 0.7) {
  135.             return {
  136.                 x: centerX,
  137.                 y: centerY
  138.             };
  139.         }
  140.     }

  141.     return null;
  142. }

  143. function 设置ADB输入法() {
  144.     try {
  145.         var 当前输入法 = ("" + agent.shell("settings get secure default_input_method")).trim();
  146.         print.log("当前默认输入法:" + 当前输入法);

  147.         var adbKeyboard = "com.android.adbkeyboard/.AdbIME";
  148.         if (当前输入法.indexOf("adbkeyboard") === -1) {
  149.             print.log("当前不是ADB输入法,尝试切换");
  150.             agent.shell("ime enable " + adbKeyboard);
  151.             sleep.millisecond(毫秒 = 300);
  152.             agent.shell("ime set " + adbKeyboard);
  153.             sleep.millisecond(毫秒 = 500);
  154.             print.log("✓ 已切换到ADB输入法");
  155.         } else {
  156.             print.log("✓ 当前已是ADB输入法");
  157.         }
  158.     } catch (e) {
  159.         print.log("⚠ 设置ADB输入法失败:" + e.message);
  160.         print.log("提示:请手动安装ADB Keyboard并设置为默认输入法");
  161.     }
  162. }

  163. function 输入文本(content, x, y) {
  164.     var 粘贴成功 = false;

  165.     agent.click(Math.floor(x), Math.floor(y));
  166.     sleep.second(秒 = 1);

  167.     agent.shell("service call clipboard 4 i32 1 s16 '" + content + "' i32 0");
  168.     sleep.millisecond(毫秒 = 300);
  169.     agent.shell("service call clipboard 3 i32 1 s16 '" + content + "' i32 0");
  170.     sleep.millisecond(毫秒 = 300);
  171.     Clipboard.copy(content);
  172.     sleep.millisecond(毫秒 = 300);

  173.     print.log("✓ 剪贴板已设置内容");

  174.     agent.shell("input keyevent 279");
  175.     sleep.second(秒 = 1);
  176.     var xmlA = 获取XML();
  177.     if (xmlA.indexOf(content.substring(0, 2)) !== -1) {
  178.         粘贴成功 = true;
  179.         print.log("✓ KEYCODE_PASTE 粘贴成功");
  180.     }

  181.     if (!粘贴成功) {
  182.         agent.shell("input keyevent 50 --meta 0x1000");
  183.         sleep.second(秒 = 1);
  184.         var xmlB = 获取XML();
  185.         if (xmlB.indexOf(content.substring(0, 2)) !== -1) {
  186.             粘贴成功 = true;
  187.             print.log("✓ Ctrl+V 粘贴成功");
  188.         }
  189.     }

  190.     if (!粘贴成功) {
  191.         var 长按命令 = "input swipe " + Math.floor(x) + " " + Math.floor(y) + " " + (Math.floor(x) + 1) + " " + (Math.floor(y) + 1) + " 2000";
  192.         agent.shell(长按命令);
  193.         sleep.second(秒 = 2);

  194.         var xmlC = 获取XML();
  195.         var 关键词 = ["粘贴", "Paste", "paste"];
  196.         for (var i = 0; i < 关键词.length; i++) {
  197.             if (xmlC.indexOf(关键词[i]) !== -1) {
  198.                 var 后面 = xmlC.substring(xmlC.indexOf(关键词[i]));
  199.                 var m = 后面.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  200.                 if (!m) {
  201.                     m = 后面.match(/bounds='\[(\d+),(\d+)\]\[(\d+),(\d+)\]'/);
  202.                 }
  203.                 if (m) {
  204.                     var cx = (parseInt(m[1]) + parseInt(m[3])) / 2;
  205.                     var cy = (parseInt(m[2]) + parseInt(m[4])) / 2;
  206.                     agent.click(cx, cy);
  207.                     粘贴成功 = true;
  208.                     print.log("✓ 长按粘贴成功");
  209.                     break;
  210.                 }
  211.             }
  212.         }
  213.     }

  214.     if (!粘贴成功) {
  215.         print.log("✗ 所有粘贴方式均未成功");
  216.     }

  217.     return 粘贴成功;
  218. }

  219. function 查找完成按钮(xml) {
  220.     var xmlStr = "" + xml;

  221.     var pattern = /class="android\.view\.View"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
  222.     var match;
  223.     var 候选列表 = [];
  224.    
  225.     while ((match = pattern.exec(xmlStr)) !== null) {
  226.         var x1 = parseInt(match[1]);
  227.         var y1 = parseInt(match[2]);
  228.         var x2 = parseInt(match[3]);
  229.         var y2 = parseInt(match[4]);

  230.         if (y1 > 屏幕高 * 0.9) {
  231.             var 节点片段 = xmlStr.substring(match.index, match.index + 200);
  232.             var 可用 = 节点片段.indexOf("enabled=\"true\"") !== -1 || 节点片段.indexOf("enabled='true'") !== -1;
  233.             候选列表.push({
  234.                 x1: x1, y1: y1, x2: x2, y2: y2,
  235.                 enabled: 可用,
  236.                 x: (x1 + x2) / 2,
  237.                 y: (y1 + y2) / 2
  238.             });
  239.         }
  240.     }

  241.     候选列表.sort(function(a, b) {
  242.         return b.x1 - a.x1;
  243.     });

  244.     for (var i = 0; i < 候选列表.length; i++) {
  245.         if (候选列表[i].enabled) {
  246.             return {
  247.                 x: 候选列表[i].x,
  248.                 y: 候选列表[i].y
  249.             };
  250.         }
  251.     }

  252.     if (候选列表.length > 0) {
  253.         return {
  254.             x: 候选列表[0].x,
  255.             y: 候选列表[0].y
  256.         };
  257.     }

  258.     return null;
  259. }

  260. function 查找选择吧区域(xml) {
  261.     var xmlStr = "" + xml;

  262.     var pattern = /class="android\.widget\.RelativeLayout"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
  263.     var match;
  264.     while ((match = pattern.exec(xmlStr)) !== null) {
  265.         var x1 = parseInt(match[1]);
  266.         var y1 = parseInt(match[2]);
  267.         var x2 = parseInt(match[3]);
  268.         var y2 = parseInt(match[4]);

  269.         if (y1 > 300 && y2 < 600 && x2 - x1 > 500) {
  270.             var 节点片段 = xmlStr.substring(match.index, match.index + 500);
  271.             if (节点片段.indexOf("选择吧") !== -1) {
  272.                 return {
  273.                     x: (x1 + x2) / 2,
  274.                     y: (y1 + y2) / 2
  275.                 };
  276.             }
  277.         }
  278.     }

  279.     return null;
  280. }

  281. function 查找第一个吧(xml) {
  282.     var xmlStr = "" + xml;

  283.     var pattern = /class="android\.widget\.LinearLayout"[^>]*?bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/g;
  284.     var match;
  285.     var 候选列表 = [];

  286.     while ((match = pattern.exec(xmlStr)) !== null) {
  287.         var x1 = parseInt(match[1]);
  288.         var y1 = parseInt(match[2]);
  289.         var x2 = parseInt(match[3]);
  290.         var y2 = parseInt(match[4]);

  291.         if (y1 > 800 && y2 - y1 > 200) {
  292.             var 节点片段 = xmlStr.substring(match.index, match.index + 300);
  293.             if (节点片段.indexOf('clickable="true"') !== -1 || 节点片段.indexOf("clickable='true'") !== -1) {
  294.                 候选列表.push({
  295.                     x: (x1 + x2) / 2,
  296.                     y: (y1 + y2) / 2,
  297.                     top: y1
  298.                 });
  299.             }
  300.         }
  301.     }

  302.     候选列表.sort(function(a, b) {
  303.         return a.top - b.top;
  304.     });

  305.     if (候选列表.length > 0) {
  306.         return 候选列表[0];
  307.     }

  308.     return null;
  309. }

  310. function 选择相册图片(数量) {
  311.     print.log("准备从相册选择 " + 数量 + " 张图片");
  312.     var 已选 = 0;
  313.     var 开始时间 = Date.now();

  314.     while (已选 < 数量 && Date.now() - 开始时间 < 30000) {
  315.         try {
  316.             var xml = 获取XML();

  317.             if (xml.indexOf("相机胶卷") === -1) {
  318.                 print.log("⚠ 未检测到相册页面,等待...");
  319.                 sleep.second(秒 = 2);
  320.                 continue;
  321.             }

  322.             var 复选框列表 = [];
  323.             var descIndex = xml.indexOf('content-desc="复选框未选中"');
  324.             while (descIndex !== -1) {
  325.                 var 后面 = xml.substring(descIndex);
  326.                 var boundsM = 后面.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  327.                 if (boundsM) {
  328.                     var left = parseInt(boundsM[1]);
  329.                     var top = parseInt(boundsM[2]);
  330.                     var right = parseInt(boundsM[3]);
  331.                     var bottom = parseInt(boundsM[4]);
  332.                     var width = right - left;
  333.                     var height = bottom - top;

  334.                     if (width > 50 && height > 50) {
  335.                         复选框列表.push({
  336.                             centerX: (left + right) / 2,
  337.                             centerY: (top + bottom) / 2,
  338.                             left: left,
  339.                             top: top
  340.                         });
  341.                     }
  342.                 }
  343.                 descIndex = xml.indexOf('content-desc="复选框未选中"', descIndex + 20);
  344.             }

  345.             复选框列表.sort(function(a, b) {
  346.                 if (Math.abs(a.top - b.top) < 50) {
  347.                     return a.left - b.left;
  348.                 }
  349.                 return a.top - b.top;
  350.             });

  351.             print.log("找到 " + 复选框列表.length + " 个复选框");

  352.             if (复选框列表.length > 已选) {
  353.                 var 目标节点 = 复选框列表[已选];
  354.                 agent.click(Math.floor(目标节点.centerX), Math.floor(目标节点.centerY));
  355.                 print.log("✓ 已选中第 " + (已选 + 1) + " 张图片 (" + Math.floor(目标节点.centerX) + ", " + Math.floor(目标节点.centerY) + ")");
  356.                 已选++;
  357.                 sleep.second(秒 = 1);
  358.             } else {
  359.                 print.log("⚠ 复选框不足,尝试点击图片区域...");

  360.                 var 图片列表 = [];
  361.                 var classIndex = xml.indexOf('class="android.widget.RelativeLayout"');
  362.                 while (classIndex !== -1) {
  363.                     var 后面 = xml.substring(classIndex);
  364.                     var boundsM = 后面.match(/bounds="\[(\d+),(\d+)\]\[(\d+),(\d+)\]"/);
  365.                     if (boundsM) {
  366.                         var left = parseInt(boundsM[1]);
  367.                         var top = parseInt(boundsM[2]);
  368.                         var right = parseInt(boundsM[3]);
  369.                         var bottom = parseInt(boundsM[4]);
  370.                         var width = right - left;
  371.                         var height = bottom - top;

  372.                         if (width > 100 && height > 100 && top > 500) {
  373.                             图片列表.push({
  374.                                 centerX: (left + right) / 2,
  375.                                 centerY: (top + bottom) / 2,
  376.                                 left: left,
  377.                                 top: top
  378.                             });
  379.                         }
  380.                     }
  381.                     classIndex = xml.indexOf('class="android.widget.RelativeLayout"', classIndex + 35);
  382.                 }

  383.                 图片列表.sort(function(a, b) {
  384.                     if (Math.abs(a.top - b.top) < 50) {
  385.                         return a.left - b.left;
  386.                     }
  387.                     return a.top - b.top;
  388.                 });

  389.                 if (图片列表.length > 已选) {
  390.                     var 目标图片 = 图片列表[已选];
  391.                     agent.click(Math.floor(目标图片.centerX), Math.floor(目标图片.centerY));
  392.                     print.log("✓ 已点击第 " + (已选 + 1) + " 张图片区域 (" + Math.floor(目标图片.centerX) + ", " + Math.floor(目标图片.centerY) + ")");
  393.                     已选++;
  394.                     sleep.second(秒 = 1);
  395.                 } else {
  396.                     print.log("⚠ 图片不足,等待加载...");
  397.                     sleep.second(秒 = 2);
  398.                 }
  399.             }
  400.         } catch (e) {
  401.             print.log("⚠ 选择第 " + (已选 + 1) + " 张图片失败:" + e.message);
  402.             sleep.second(秒 = 1);
  403.         }
  404.     }

  405.     print.log("共选中 " + 已选 + " 张图片");
  406.     return 已选;
  407. }

  408. // ========================================
  409. // 主循环开始
  410. // ========================================
  411. for (当前循环 = 1; 循环次数 == 0 || 当前循环 <= 循环次数; 当前循环++) {
  412.     if (循环次数 > 0) {
  413.         print.log("\n======================================");
  414.         print.log("===== 第 " + 当前循环 + " / " + 循环次数 + " 次循环 =====");
  415.         print.log("======================================");
  416.     } else {
  417.         print.log("\n======================================");
  418.         print.log("===== 第 " + 当前循环 + " 次循环(无限模式)=====");
  419.         print.log("======================================");
  420.     }

  421.     var 发布标题 = 发布标题列表[内容索引 % 发布标题列表.length];
  422.     var 发布内容 = 发布内容列表[内容索引 % 发布内容列表.length];
  423.     内容索引++;

  424.     print.log("本次发布标题:" + 发布标题);
  425.     print.log("本次发布内容:" + 发布内容);

  426.     // ========================================
  427.     // 步骤1:启动百度贴吧
  428.     // ========================================
  429.     print.log("\n========== 步骤1:启动百度贴吧 ==========");
  430.     try {
  431.         app.openApp(APP包名);
  432.         print.log("✓ 已启动百度贴吧");
  433.     } catch (e) {
  434.         print.log("✗ 启动失败:" + e.message);
  435.     }
  436.     sleep.second(秒 = 5);

  437.     // ========================================
  438.     // 步骤2:设置ADB输入法(支持中文输入)
  439.     // ========================================
  440.     print.log("\n========== 步骤2:设置ADB输入法 ==========");
  441.     设置ADB输入法();

  442.     // ========================================
  443.     // 步骤3:点击底部导航中间的加号按钮
  444.     // ========================================
  445.     print.log("\n========== 步骤3:点击底部导航中间的加号按钮 ==========");
  446.     var 加号按钮点击成功 = false;

  447.     for (var i = 0; i < 5; i++) {
  448.         var xml2 = 获取XML();
  449.         print.log("  正在扫描界面...");

  450.         var 加号按钮位置 = 查找底部导航中间按钮(xml2);
  451.         if (加号按钮位置) {
  452.             print.log("  ✓ 找到底部导航中间按钮:(" + Math.floor(加号按钮位置.x) + ", " + Math.floor(加号按钮位置.y) + ")");
  453.             agent.click(Math.floor(加号按钮位置.x), Math.floor(加号按钮位置.y));
  454.             加号按钮点击成功 = true;
  455.             sleep.second(秒 = 3);

  456.             var xml2b = 获取XML();
  457.             var 添加图片选项位置 = 查找节点中心(xml2b, "添加图片");
  458.             if (添加图片选项位置) {
  459.                 print.log("  ✓ 找到添加图片选项");
  460.                 agent.click(Math.floor(添加图片选项位置.x), Math.floor(添加图片选项位置.y));
  461.                 print.log("✓ 已进入添加图片页面");
  462.             }
  463.             break;
  464.         }

  465.         sleep.second(秒 = 2);
  466.     }

  467.     if (!加号按钮点击成功) {
  468.         print.log("⚠ 未找到加号按钮,使用百分比坐标");
  469.         agent.clickPercent(0.5, 0.96);
  470.         sleep.second(秒 = 3);

  471.         var xml2c = 获取XML();
  472.         var 添加图片选项位置 = 查找节点中心(xml2c, "添加图片");
  473.         if (添加图片选项位置) {
  474.             print.log("  ✓ 找到添加图片选项");
  475.             agent.click(Math.floor(添加图片选项位置.x), Math.floor(添加图片选项位置.y));
  476.             print.log("✓ 已进入添加图片页面");
  477.         }
  478.     }

  479.     // ========================================
  480.     // 步骤4:等待进入相册页面
  481.     // ========================================
  482.     print.log("\n========== 步骤4:等待进入相册页面 ==========");
  483.     var 相册进入成功 = false;

  484.     for (var j = 0; j < 5; j++) {
  485.         var xml3 = 获取XML();

  486.         if (xml3.indexOf("相机胶卷") !== -1) {
  487.             print.log("✓ 已进入相册页面(相机胶卷)");
  488.             相册进入成功 = true;
  489.             break;
  490.         }

  491.         var 从相册选择位置 = 查找节点中心(xml3, "从相册选择");
  492.         if (从相册选择位置) {
  493.             print.log("  ✓ 找到从相册选择:(" + Math.floor(从相册选择位置.x) + ", " + Math.floor(从相册选择位置.y) + ")");
  494.             agent.click(Math.floor(从相册选择位置.x), Math.floor(从相册选择位置.y));
  495.             相册进入成功 = true;
  496.             sleep.second(秒 = 3);
  497.             break;
  498.         }

  499.         var 相册位置 = 查找节点中心(xml3, "相册");
  500.         if (相册位置) {
  501.             print.log("  ✓ 找到相册:(" + Math.floor(相册位置.x) + ", " + Math.floor(相册位置.y) + ")");
  502.             agent.click(Math.floor(相册位置.x), Math.floor(相册位置.y));
  503.             相册进入成功 = true;
  504.             sleep.second(秒 = 3);
  505.             break;
  506.         }

  507.         sleep.second(秒 = 2);
  508.     }

  509.     if (!相册进入成功) {
  510.         print.log("⚠ 未进入相册页面");
  511.     }

  512.     // ========================================
  513.     // 步骤5:从相册选择图片
  514.     // ========================================
  515.     print.log("\n========== 步骤5:从相册选择图片 ==========");
  516.     try {
  517.         选择相册图片(选择图片数量);
  518.     } catch (e) {
  519.         print.log("⚠ 选择图片失败:" + e.message);
  520.     }
  521.     sleep.second(秒 = 2);

  522.     // ========================================
  523.     // 步骤6:点击"完成"按钮(等待按钮变为可用)
  524.     // ========================================
  525.     print.log("\n========== 步骤6:点击完成按钮 ==========");
  526.     var 完成成功 = false;
  527.     var 开始时间 = Date.now();

  528.     while (!完成成功 && Date.now() - 开始时间 < 15000) {
  529.         var xml4 = 获取XML();

  530.         var 完成按钮位置 = 查找完成按钮(xml4);
  531.         if (完成按钮位置) {
  532.             print.log("  ✓ 找到完成按钮:(" + Math.floor(完成按钮位置.x) + ", " + Math.floor(完成按钮位置.y) + ")");
  533.             agent.click(Math.floor(完成按钮位置.x), Math.floor(完成按钮位置.y));
  534.             完成成功 = true;
  535.             sleep.second(秒 = 3);
  536.             break;
  537.         }

  538.         sleep.second(秒 = 1);
  539.     }

  540.     if (!完成成功) {
  541.         print.log("⚠ 未找到完成按钮,尝试点击底部右侧区域");
  542.         agent.clickPercent(0.85, 0.96);
  543.         sleep.second(秒 = 3);
  544.     }

  545.     // ========================================
  546.     // 步骤7:选择吧
  547.     // ========================================
  548.     print.log("\n========== 步骤7:选择吧 ==========");
  549.     var 选择吧完成 = false;
  550.     var 已经点击选择吧 = false;

  551.     for (var l = 0; l < 5; l++) {
  552.         var xml5 = 获取XML();

  553.         if (xml5.indexOf("最近逛的吧") !== -1 || xml5.indexOf("关注的吧") !== -1) {
  554.             var 第一个吧位置 = 查找第一个吧(xml5);
  555.             if (第一个吧位置) {
  556.                 print.log("  ✓ 选择列表中第一个吧:(" + Math.floor(第一个吧位置.x) + ", " + Math.floor(第一个吧位置.y) + ")");
  557.                 agent.click(Math.floor(第一个吧位置.x), Math.floor(第一个吧位置.y));
  558.                 sleep.second(秒 = 3);
  559.                 选择吧完成 = true;
  560.                 break;
  561.             }
  562.         } else if (xml5.indexOf("发布贴子") !== -1) {
  563.             var 选择吧区域 = 查找选择吧区域(xml5);
  564.             var 选择吧位置 = 查找节点中心(xml5, "选择吧");
  565.             if (选择吧区域) {
  566.                 print.log("  ✓ 找到选择吧区域:(" + Math.floor(选择吧区域.x) + ", " + Math.floor(选择吧区域.y) + ")");
  567.                 agent.click(Math.floor(选择吧区域.x), Math.floor(选择吧区域.y));
  568.                 sleep.second(秒 = 3);
  569.             } else if (选择吧位置) {
  570.                 print.log("  ✓ 找到选择吧:(" + Math.floor(选择吧位置.x) + ", " + Math.floor(选择吧位置.y) + ")");
  571.                 agent.click(Math.floor(选择吧位置.x), Math.floor(选择吧位置.y));
  572.                 sleep.second(秒 = 3);
  573.             } else {
  574.                 print.log("✓ 已选吧或无需选择吧");
  575.                 选择吧完成 = true;
  576.                 break;
  577.             }
  578.         } else {
  579.             print.log("✓ 已在发布页面(可能已选吧)");
  580.             选择吧完成 = true;
  581.             break;
  582.         }

  583.         sleep.second(秒 = 2);
  584.     }

  585.     if (!选择吧完成) {
  586.         print.log("⚠ 跳过选择吧步骤");
  587.     }

  588.     // ========================================
  589.     // 步骤8:输入标题
  590.     // ========================================
  591.     print.log("\n========== 步骤8:输入标题 ==========");
  592.     var 标题输入成功 = false;

  593.     for (var m = 0; m < 5; m++) {
  594.         var xml6 = 获取XML();

  595.         var 标题输入框位置 = 查找输入框中心(xml6, "请输入完整贴子标题");
  596.         if (!标题输入框位置) {
  597.             标题输入框位置 = 查找输入框中心(xml6, "完整贴子标题");
  598.         }
  599.         if (!标题输入框位置) {
  600.             标题输入框位置 = 查找输入框中心(xml6, "标题");
  601.         }

  602.         if (标题输入框位置) {
  603.             print.log("  ✓ 找到标题输入框:(" + Math.floor(标题输入框位置.x) + ", " + Math.floor(标题输入框位置.y) + ")");

  604.             var 粘贴结果 = 输入文本(发布标题, 标题输入框位置.x, 标题输入框位置.y);
  605.             if (粘贴结果) {
  606.                 print.log("✓ 标题输入成功");
  607.                 标题输入成功 = true;
  608.             } else {
  609.                 print.log("✗ 标题输入失败");
  610.             }
  611.             break;
  612.         }

  613.         sleep.second(秒 = 2);
  614.     }

  615.     if (!标题输入成功) {
  616.         print.log("✗ 标题输入失败");
  617.     }

  618.     // ========================================
  619.     // 步骤9:输入内容
  620.     // ========================================
  621.     print.log("\n========== 步骤9:输入内容 ==========");
  622.     var 内容输入成功 = false;

  623.     for (var n = 0; n < 5; n++) {
  624.         var xml7 = 获取XML();

  625.         var 内容输入框位置 = 查找输入框中心(xml7, "来吧,尽情发挥吧");
  626.         if (!内容输入框位置) {
  627.             内容输入框位置 = 查找输入框中心(xml7, "尽情发挥");
  628.         }
  629.         if (!内容输入框位置) {
  630.             内容输入框位置 = 查找输入框中心(xml7, "请输入内容");
  631.         }

  632.         if (内容输入框位置) {
  633.             print.log("  ✓ 找到内容输入框:(" + Math.floor(内容输入框位置.x) + ", " + Math.floor(内容输入框位置.y) + ")");

  634.             var 粘贴结果 = 输入文本(发布内容, 内容输入框位置.x, 内容输入框位置.y);
  635.             if (粘贴结果) {
  636.                 print.log("✓ 内容输入成功");
  637.                 内容输入成功 = true;
  638.             } else {
  639.                 print.log("✗ 内容输入失败");
  640.             }
  641.             break;
  642.         }

  643.         sleep.second(秒 = 2);
  644.     }

  645.     if (!内容输入成功) {
  646.         print.log("✗ 内容输入失败");
  647.     }

  648.     // ========================================
  649.     // 步骤10:点击发布
  650.     // ========================================
  651.     print.log("\n========== 步骤10:点击发布 ==========");
  652.     var 发布成功 = false;

  653.     for (var p = 0; p < 5; p++) {
  654.         var xml8 = 获取XML();

  655.         var 发布按钮位置 = 查找节点中心(xml8, "发布");
  656.         if (发布按钮位置) {
  657.             print.log("  ✓ 找到发布按钮:(" + Math.floor(发布按钮位置.x) + ", " + Math.floor(发布按钮位置.y) + ")");
  658.             agent.click(Math.floor(发布按钮位置.x), Math.floor(发布按钮位置.y));
  659.             sleep.second(秒 = 3);

  660.             var xml8b = 获取XML();
  661.             if (xml8b.indexOf("发布成功") !== -1 || xml8b.indexOf("帖子已发布") !== -1) {
  662.                 print.log("✓ 帖子发布成功");
  663.                 发布成功 = true;
  664.             } else if (xml8b.indexOf("发布贴子") === -1) {
  665.                 print.log("✓ 已离开发布页面,发布流程完成");
  666.                 发布成功 = true;
  667.             } else {
  668.                 print.log("⚠ 发布按钮点击后页面未变化");
  669.             }
  670.             break;
  671.         }

  672.         sleep.second(秒 = 2);
  673.     }

  674.     if (!发布成功) {
  675.         print.log("✗ 发布失败");
  676.     }

  677.     // ========================================
  678.     // 步骤11:关闭APP
  679.     // ========================================
  680.     print.log("\n========== 步骤11:关闭APP ==========");
  681.     try {
  682.         agent.shell("am force-stop " + APP包名);
  683.         print.log("✓ 已关闭百度贴吧");
  684.     } catch (e) {
  685.         print.log("⚠ 关闭APP失败:" + e.message);
  686.     }
  687.     sleep.second(秒 = 3);

  688.     // ========================================
  689.     // 循环间隔
  690.     // ========================================
  691.     if (循环次数 == 0 || 当前循环 < 循环次数) {
  692.         print.log("\n========== 等待下一次循环 ==========");
  693.         sleep.second(秒 = 5);
  694.     }
  695. }

  696. // ========================================
  697. // 结果汇总
  698. // ========================================
  699. print.timeEnd();
  700. print.log("\n======================================");
  701. print.log("===== 所有循环执行完成 =====");
  702. if (循环次数 > 0) {
  703.     print.log("总计执行:" + 循环次数 + " 次");
  704. } else {
  705.     print.log("无限循环模式,已执行:" + (当前循环 - 1) + " 次");
  706. }
  707. print.log("======================================");
复制代码



unto自动百度贴吧示例nextnocontent
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
信息发布软件启动自动百度贴吧发图片
启动自动百度贴吧发图片
信息发布软件自动百度贴吧示例
自动百度贴吧示例
信息发布软件代理模式简书自动流程
代理模式简书自动流程
信息发布软件启动极速版任务页看小说赚钱自动阅读
启动极速版任务页看小说赚钱自动阅读
信息发布软件agent代理模式功能小结
agent代理模式功能小结
信息发布软件完整苹果IOS小脚本文本输入与粘贴流程
完整苹果IOS小脚本文本输入与粘贴流程
信息发布软件AIWROK使用activity列表开关与进度条的协同交互
AIWROK使用activity列表开关与进度条的协同交互
群发软件苹果脚本找图后Detect对象各种方法演示
苹果脚本找图后Detect对象各种方法演示
群发软件苹果脚本网络API监控与数据管理工具
苹果脚本网络API监控与数据管理工具
群发软件IOS苹果脚本TXT文件读写H5日志打印完整示例
IOS苹果脚本TXT文件读写H5日志打印完整示例
群发软件AIWROK软件演示多线程创建暂停恢复
AIWROK软件演示多线程创建暂停恢复
群发软件AIWROK软件定时检查页面状态防止卡死技巧
AIWROK软件定时检查页面状态防止卡死技巧
群发软件安卓脚本runTime相关功能示例
安卓脚本runTime相关功能示例
群发软件floatUI实例秒显示秒关闭吐司功能
floatUI实例秒显示秒关闭吐司功能
群发软件苹果脚本HID多行实例粘帖板示例
苹果脚本HID多行实例粘帖板示例
群发软件安卓脚本HID节点查找完整方法示例
HID节点查找完整方法示例
群发软件AIWROK软件框架的抖音自动化营销系统
AIWROK软件框架的抖音自动化营销系统
群发软件赛博朋克任务控制中心H5示例
赛博朋克任务控制中心H5示例
群发软件苹果脚本现代深色UI设计风格
现代深色UI设计风格
群发软件AIWROK软件智能任务监控悬浮窗
AIWROK软件智能任务监控悬浮窗
群发软件AIWROK软件事件监听示例
AIWROK软件事件监听示例
群发软件QZ掘金原生UI界面
QZ掘金原生UI界面
群发软件安卓脚本auto方法完整示例
安卓脚本auto方法完整示例
群发软件安卓脚本暂停弹出确认对话框
安卓脚本暂停弹出确认对话框
群发软件苹果iOS脚本天气信息查询工具
苹果iOS脚本天气信息查询工具
群发软件安卓脚本简化版H5日志输出窗口
安卓脚本简化版H5日志输出窗口
群发软件安卓脚本简化版H5日志输出窗口
安卓脚本简化版H5日志输出窗口
群发软件安卓脚本应用重置、代理模式监控及补丁升级
安卓脚本应用重置、代理模式监控及补丁升级
群发软件安卓脚本里的打开关闭安装以及卡密授权信息
安卓脚本里的打开关闭安装以及卡密授权信息
群发软件AIWROK软件脚本GET下载文件并检测0KB工具
AIWROK软件脚本GET下载文件并检测0KB工具
群发软件安卓脚本HID按键方法完整示例
安卓脚本HID按键方法完整示例
群发软件AIWROK软件键鼠HID滑动所有方法功能演示
AIWROK软件键鼠HID滑动所有方法功能演示
群发软件苹果脚本里HID的5种滑动方法的使用
苹果脚本里HID的5种滑动方法的使用
群发软件苹果脚本示例7种不同的OCR识别和点击方法
苹果脚本示例7种不同的OCR识别和点击方法
群发软件AIWROK软件安卓脚本FTP上传下载例子
AIWROK软件安卓脚本FTP上传下载例子
群发软件AIWROK软件脚本JSON转换示例
AIWROK软件脚本JSON转换示例
群发软件AIWROK软件运算符高级应用实例
AIWROK软件运算符高级应用实例
群发软件JavaScript语法小示例
JavaScript语法小示例
群发软件展示JavaScript各种语句标识符的实际应用
展示JavaScript各种语句标识符的实际应用
群发软件AIWROK条件语句实用示例智能活动推荐系统
AIWROK条件语句实用示例智能活动推荐系统
群发软件AIWROK软件示例数组方法实战应用
AIWROK软件示例数组方法实战应用
群发软件示例JavaScript的 try-catch-finally-throw用法
示例JavaScript的 try-catch-finally-throw用法
群发软件JavaScript 高级错误处理实战示例
JavaScript 高级错误处理实战示例
群发软件安卓脚本AIWROK软件示例JS函数高级用法
安卓脚本AIWROK软件示例JS函数高级用法
群发软件AIWROK环境JavaScript编码规范完整示例
AIWROK环境JavaScript编码规范完整示例
群发软件安卓脚本示例实时截图判断页面变化
安卓脚本示例实时截图判断页面变化
群发软件苹果脚本7种不同的OCR识别
苹果脚本7种不同的OCR识别
群发软件安卓脚本多变的function用法
安卓脚本多变的function用法
群发软件苹果脚本示例Config配置H5集成
苹果脚本示例Config配置H5集成
群发软件安卓脚本类型判断与Boolean对象综合示例
安卓脚本类型判断与Boolean对象综合示例
群发软件线程全局变量H5可视化控制台
线程全局变量H5可视化控制台
群发软件秒吐司快速显示和关闭的UI提示窗口
秒吐司快速显示和关闭的UI提示窗口
群发软件苹果脚本里H5 里的 window.at.callFun 示例
苹果脚本里H5 里的 window.at.callFun 示例
群发软件H5日志打印运行过程例子
H5日志打印运行过程例子
群发软件AIWROK软件字符串方法实用案例
AIWROK软件字符串方法实用案例
群发软件HID贝塞尔曲线运动控制器
HID贝塞尔曲线运动控制器
群发软件AIWROK苹果脚本sleep方法综合实战示例
AIWROK苹果脚本sleep方法综合实战示例
群发软件苹果脚本Line控件的多种创意用法和实际应用场景
苹果脚本Line控件的多种创意用法和实际应用场景
群发软件苹果脚本toast高级应用综合示例
苹果脚本toast高级应用综合示例
群发软件苹果智能OCR自动化助手
苹果智能OCR自动化助手
群发软件苹果脚本UI超快速点击示例
苹果脚本UI超快速点击示例
群发软件展示时间戳的各种复杂处理方法
展示时间戳的各种复杂处理方法
群发软件苹果脚本随机数实用示例
苹果脚本随机数实用示例
群发软件安卓手机脚本多种倒计时显示方式
安卓手机脚本多种倒计时显示方式
群发软件苹果脚本屏幕事件EVENT示例
苹果脚本屏幕事件EVENT示例

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2026-7-10 07:53 , Processed in 0.564615 second(s), 51 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表