function selectMaxBuyCount() {
try {
log(📦 自动识别最大可购数量...);
let stockElem = textMatches(/库存|剩余|共|现货|可售|限购|每人限/).findOne(2000);
let maxCount = 1;
if (stockElem) {
let stockText = stockElem.text();
maxCount = parseInt(stockText.match(/\d+/)[0]) || 1;
}
const customMax = 5;
maxCount = Math.min(maxCount, customMax);
log(✅ 最大可购:${maxCount}件);
let countArea = textMatches(/^\d+$/).findOne(1500)
|| textContains("件").findOne(1500)
|| descMatches(/数量|购买数量/).findOne(1500);
if (!countArea) {
log(`⚠️ 无数量选择区,默认1件`);
return;
}
countArea.click();
sleep(600);
let addBtn = text("+").findOne(1200)
|| desc("增加|加").findOne(1200)
|| className("android.widget.ImageView").descMatches(/数量加/).findOne(1200);
if (!addBtn) {
log(`⚠️ 无加号按钮,默认当前数量`);
return;
}
let currentCount = 1;
while (currentCount < maxCount) {
addBtn.click();
currentCount++;
sleep(CONFIG.clickDelay + Math.random() * 100);
let checkNum = textMatches(/^\d+$/).findOne(300);
if (checkNum && parseInt(checkNum.text()) === currentCount - 1) {
log(`✅ 已达最大数量`);
break;
}
}
log(`✅ 已选:${currentCount}件`);
} catch (e) {
log(⚠️ 数量选择异常,默认1件);
}
}把这个放在hamibot中直接使用的代码发给我
回答
// 文档地址 https://docs.hamibot.com/
function selectMaxBuyCount() {
try {
log(`📦 自动识别最大可购数量...`);
let stockElem = textMatches(/库存|剩余|共|现货|可售|限购|每人限/).findOne(2000);
let maxCount = 1;
if (stockElem) {
let stockText = stockElem.text();
maxCount = parseInt(stockText.match(/\d+/)[0]) || 1;
}
const customMax = 5;
maxCount = Math.min(maxCount, customMax);
log(`✅ 最大可购:${maxCount}件`);
let countArea = textMatches(/^\d+$/).findOne(1500)
|| textContains("件").findOne(1500)
|| descMatches(/数量|购买数量/).findOne(1500);
if (!countArea) {
log(`⚠️ 无数量选择区,默认1件`);
return;
}
countArea.click();
sleep(600);
let addBtn = text("+").findOne(1200)
|| desc("增加|加").findOne(1200)
|| className("android.widget.ImageView").descMatches(/数量加/).findOne(1200);
if (!addBtn) {
log(`⚠️ 无加号按钮,默认当前数量`);
return;
}
let currentCount = 1;
while (currentCount < maxCount) {
addBtn.click();
currentCount++;
sleep(300 + Math.random() * 100); // CONFIG.clickDelay is not defined, using default value
let checkNum = textMatches(/^\d+$/).findOne(300);
if (checkNum && parseInt(checkNum.text()) === currentCount - 1) {
log(`✅ 已达最大数量`);
break;
}
}
log(`✅ 已选:${currentCount}件`);
} catch (e) {
log(`⚠️ 数量选择异常,默认1件`);
}
}
// 调用函数示例
auto.waitFor(); // 确保无障碍服务已启用
selectMaxBuyCount();
ℹ️ 本回答由 AI 生成,内容仅供参考