// 门类 3D 建模验证: 切换样板 31337(对开门) 截图关/开: node verify-door.mjs import puppeteer from 'puppeteer-core' const token = process.argv[2] const sleep = ms => new Promise(r => setTimeout(r, ms)) const browser = await puppeteer.launch({ executablePath: 'C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe', headless: 'new', args: ['--window-size=1440,900', '--enable-unsafe-swiftshader', '--use-gl=angle', '--use-angle=swiftshader'], defaultViewport: { width: 1440, height: 900 }, }) const page = await browser.newPage() await page.goto(`http://localhost:8000/threed?token=${encodeURIComponent(token)}`, { waitUntil: 'networkidle2' }) await sleep(1500) // 打开样板下拉并选择 31337 await page.click('.el-select__wrapper, .el-select') await sleep(600) const items = await page.$$('.el-select-dropdown__item') for (const it of items) { const txt = await it.evaluate(el => el.textContent.trim()) if (txt.includes('31337')) { await it.click(); break } } await sleep(2200) const cv = await (await page.$('.threed-wrap canvas')).boundingBox() await page.screenshot({ path: 'D:/Code/huamenchuang/shots/door-31337-closed.png', clip: cv }) // 拖滑杆到 55% const handle = await page.$('.ctrl .el-slider__button') const hr = await handle.boundingBox() await page.mouse.move(hr.x + hr.width / 2, hr.y + hr.height / 2) await page.mouse.down() const rr = await (await page.$('.ctrl .el-slider__runway')).boundingBox() for (let i = 1; i <= 10; i++) { await page.mouse.move(rr.x + rr.width * 0.55, hr.y + hr.height / 2, { steps: 1 }) await sleep(40) } await page.mouse.up() await sleep(1400) await page.screenshot({ path: 'D:/Code/huamenchuang/shots/door-31337-open.png', clip: cv }) console.log('✓ 31337 对开门 3D 截图完成') await browser.close()