AI_UIAutomation/scripts/debug-find-category.ts

32 lines
1.4 KiB
TypeScript

import * as dotenv from 'dotenv';
import * as path from 'path';
dotenv.config({ path: path.resolve(__dirname, '../.env') });
import { createDriver } from '../drivers/factory';
import { navigateToAddPage } from '../utils/common/navigation.helper';
import { sleep } from '../utils/common/element.helper';
// 下滑添加页,逐屏找含 "Remote" 的文案,定位标准 Remote 入口的确切文字与位置
async function main() {
const needle = process.argv[2] || 'Remote';
const driver = createDriver();
await driver.createSession();
try {
await navigateToAddPage(driver, 'Device');
await sleep(2500);
for (let i = 0; i <= 10; i++) {
const src = await driver.getSource();
const hits = Array.from(src.matchAll(/text="([^"]*)"/g)).map((m) => m[1])
.filter((t) => t && t.toLowerCase().includes(needle.toLowerCase()));
console.log(`屏#${i} 命中"${needle}":`, hits.length ? Array.from(new Set(hits)).join(' | ') : '(无)');
// 命中精确 needle 就停
const exact = await driver.findElementRaw('-android uiautomator', `new UiSelector().text("${needle}")`);
if (exact) { console.log(`>>> 屏#${i} 找到精确 text("${needle}")`); break; }
await driver.scrollDown(700);
await sleep(1200);
}
} finally {
await driver.destroySession();
}
}
main().catch((e) => { console.error('ERR:', e.message); process.exit(1); });