Initial commit: Telegram Management System
Some checks failed
Deploy / deploy (push) Has been cancelled
Some checks failed
Deploy / deploy (push) Has been cancelled
Full-stack web application for Telegram management - Frontend: Vue 3 + Vben Admin - Backend: NestJS - Features: User management, group broadcast, statistics 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
102
check-menu-visibility.js
Normal file
102
check-menu-visibility.js
Normal file
@@ -0,0 +1,102 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
})();
|
||||
Reference in New Issue
Block a user