const { chromium } = require('playwright'); const htmlPath = 'C:\\Users\\然然小可爱\\Desktop\\数学乐园\\index.html'; const fileUrl = 'file:///' + htmlPath.replace(/\\/g, '/'); (async () => { const browser = await chromium.launch({ headless: true, args: ['--no-sandbox'] }); const page = await browser.newPage({ viewport: { width: 800, height: 900 } }); page.on('pageerror', e => console.log(' JS_ERROR:', e.message)); await page.goto(fileUrl, { timeout: 10000 }).catch(() => {}); await page.waitForTimeout(1000); console.log('=== 测试:EG例题流程 ==='); // 进入Ch1 const cp0 = await page.$('.cp[data-idx="0"]'); const b = await cp0.boundingBox(); await page.mouse.click(b.x + b.width/2, b.y + b.height/2); await page.waitForTimeout(300); // 点 "发车" 进入KP await page.click('.act.show'); await page.waitForTimeout(200); // KP1继续、KP2继续、KP3继续 = 3次 for (let i = 0; i < 3; i++) { await page.click('.act.show'); await page.waitForTimeout(100); } // 到达EG const egTitle = await page.$eval('.eg-title', e => e.textContent).catch(() => 'NO_EG'); console.log('EG标题:', egTitle); // 检查EG初始显示几个步骤 const stepCnt = await page.$$eval('.eg-step', els => els.length); console.log('初始步骤数:', stepCnt); // 检查按钮类型 const btnId = await page.evaluate(() => { const btn = document.querySelector('.eg-btn, .act.show'); return btn ? (btn.id || btn.className) : 'none'; }); console.log('初始按钮:', btnId); // 逐步骤点击 "下一步" let clickCount = 0; while (true) { const egBtn = await page.$('#egBtn'); if (!egBtn) break; await egBtn.click(); await page.waitForTimeout(150); clickCount++; const steps = await page.$$eval('.eg-step.show', els => els.length); console.log('点击' + clickCount + '次后, 显示步骤:', steps, '/' + 5); } console.log('总"下一步"点击:', clickCount); // 现在应该出现 "继续" 按钮 const hasContinue = await page.$('.act.show'); console.log('有"继续"按钮:', hasContinue ? '✅' : '❌'); // 点击"继续" if (hasContinue) { await hasContinue.click(); await page.waitForTimeout(300); const nextContent = await page.$eval('#cGl', e => e.textContent).catch(() => ''); console.log('继续后内容:', nextContent); // 检查是否离开了EG const isStillEG = await page.$('.eg-title'); console.log('是否还在EG页:', isStillEG ? '❌ 仍在该页面' : '✅ 已前进'); } await browser.close(); })().catch(e => { console.log('失败:', e.message); process.exit(1); });