const { chromium } = require('playwright'); (async () => { const browser = await chromium.launch({ headless: true }); const context = await browser.newContext({ ignoreHTTPSErrors: true }); const page = await context.newPage(); // 登录 console.log('1. 登录...'); await page.goto('http://127.0.0.1/admin/login'); await page.waitForTimeout(1000); await page.fill('input[type="text"], input[placeholder*="用户名"]', 'admin'); await page.fill('input[type="password"]', 'admin123'); await page.click('button:has-text("登录")'); await page.waitForTimeout(2000); console.log('登录后URL:', page.url()); // 导航到产量报表 console.log('\n2. 导航到产量报表...'); await page.goto('http://127.0.0.1/admin/production'); await page.waitForTimeout(3000); // 截图 await page.screenshot({ path: 'test-screenshots/production-page-v2.png', fullPage: true }); // 检查日期 const dateInputs = await page.$$eval('.el-date-editor input', els => els.map(e => e.value)); console.log('日期选择器:', dateInputs); // 检查今天日期 const today = new Date(); console.log('JS Date today:', today.toISOString(), today.toLocaleDateString('zh-CN')); // 检查表格内容 const rows = await page.$$eval('.el-table__body tr', trs => trs.slice(0, 3).map(tr => { const cells = tr.querySelectorAll('td .cell'); return Array.from(cells).map(c => c.textContent.trim()); }) ); console.log('\n表格前3行:'); rows.forEach((row, i) => console.log(` 行${i+1}:`, JSON.stringify(row))); // 检查汇总 const summaryText = await page.evaluate(() => { const el = document.querySelector('.summary-card, .el-card'); return el ? el.innerText.substring(0, 200) : '无汇总卡片'; }); console.log('\n汇总:', summaryText); await browser.close(); })();