const { chromium } = require('playwright'); (async () => { let browser; try { console.log('启动浏览器检查菜单显示...'); browser = await chromium.launch({ headless: false, slowMo: 300 }); const context = await browser.newContext({ viewport: { width: 1920, height: 1080 } }); const page = await context.newPage(); // 登录 console.log('\n执行登录...'); await page.goto('http://localhost:5174/', { waitUntil: 'networkidle' }); await page.fill('[name="username"]', 'admin'); await page.fill('[name="password"]', '111111'); await page.click('button:has-text("登录")'); await page.waitForTimeout(2000); // 访问首页 if (page.url().includes('login')) { await page.goto('http://localhost:5174/dashboard/home', { waitUntil: 'networkidle' }); } await page.waitForTimeout(1000); console.log('\n检查菜单显示情况...'); // 获取所有菜单项 const allMenuItems = await page.locator('.ant-menu-item, .ant-menu-submenu').all(); console.log(`\n找到 ${allMenuItems.length} 个菜单元素`); // 获取所有一级菜单(父菜单) const parentMenus = await page.locator('.ant-menu-submenu-title').all(); console.log(`\n一级菜单(${parentMenus.length}个):`); for (let i = 0; i < parentMenus.length; i++) { const text = await parentMenus[i].textContent(); console.log(`${i + 1}. ${text.trim()}`); } // 展开所有一级菜单并获取子菜单 console.log('\n\n展开菜单查看子菜单项...'); for (let i = 0; i < parentMenus.length; i++) { const parentText = await parentMenus[i].textContent(); console.log(`\n${parentText.trim()}:`); // 点击展开 await parentMenus[i].click(); await page.waitForTimeout(300); // 获取当前展开的子菜单 const subMenuItems = await page.locator('.ant-menu-submenu-open .ant-menu-item').all(); if (subMenuItems.length > 0) { for (let j = 0; j < subMenuItems.length; j++) { const subText = await subMenuItems[j].textContent(); console.log(` - ${subText.trim()}`); } } else { console.log(' (无子菜单)'); } // 收起菜单 await parentMenus[i].click(); await page.waitForTimeout(300); } // 获取独立的菜单项(非子菜单) const standaloneItems = await page.locator('.ant-menu > .ant-menu-item').all(); if (standaloneItems.length > 0) { console.log('\n\n独立菜单项:'); for (let i = 0; i < standaloneItems.length; i++) { const text = await standaloneItems[i].textContent(); console.log(`- ${text.trim()}`); } } // 截图当前状态 await page.screenshot({ path: 'test-screenshots/menu-visibility-check.png', fullPage: true }); console.log('\n\n菜单检查完成!'); console.log('保持浏览器打开,您可以手动测试...'); // 保持浏览器打开 await new Promise(() => {}); } catch (error) { console.error('出错了:', error); if (browser) { await browser.close(); } } })();