第一次

This commit is contained in:
dengqichen 2025-03-05 16:31:02 +08:00
parent 6b5982bd2e
commit 90882138f0

View File

@ -565,7 +565,7 @@ class LongiMainPage extends BasePage {
await this.handleThreeLevelMenu(menu);
} else {
// 处理二级菜单点击
// await this.handleMenuClick(menu);
await this.handleMenuClick(menu);
}
}
@ -703,32 +703,80 @@ class LongiMainPage extends BasePage {
}
}
/**
* 获取三级菜单列表
* @param {Object} parentMenu 父级菜单对象
* @returns {Promise<Array>} 三级菜单项数组
* @private
*/
async getThirdLevelMenus(parentMenu) {
try {
// 检查三级菜单是否存在
const elements = await this.page.locator('.el-popper.is-light.el-popover .menuTitle.canClick').all();
if (elements.length === 0) {
return [];
}
// 收集所有三级菜单项
const thirdMenus = [];
for (let i = 0; i < elements.length; i++) {
const element = elements[i];
const text = await element.textContent();
thirdMenus.push({
index: i,
text: text.trim(),
element: element,
hasThirdMenu: false, // 三级菜单项不会有下一级
uniqueId: `menu_${parentMenu.uniqueId}_${i}_${text.trim().replace(/\s+/g, '_')}`,
path: `${parentMenu.text} > ${text.trim()}`
});
}
return thirdMenus;
} catch (error) {
console.error(`获取三级菜单失败: ${error.message}`);
return [];
}
}
/**
* 处理三级菜单
* @param {Object} menu 菜单对象
*/
async handleThreeLevelMenu(menu) {
try {
console.log(`正在处理 ${menu.text}菜单`)
console.log(`正在处理 ${menu.text} 菜单`);
await menu.element.click();
// 等待一个短暂的时间让弹出层出现
await this.page.waitForTimeout(500);
// 检查三级菜单是否存在
const hasThirdMenu = await this.page.evaluate(() => {
const elements = document.querySelectorAll('.el-popper.is-light.el-popover .menuTitle.canClick');
return elements.length > 0;
});
// 获取三级菜单列表
const thirdMenus = await this.getThirdLevelMenus(menu);
if (!hasThirdMenu) {
if (thirdMenus.length === 0) {
console.log(`⚠️ ${menu.text} 没有找到三级菜单项`);
return;
}
console.log(`${menu.text} 找到三级菜单`);
console.log(`${menu.text} 找到 ${thirdMenus.length} 个三级菜单项:`);
thirdMenus.forEach(item => {
console.log(` - ${item.text}`);
});
// 这里可以根据需要处理三级菜单项
// 比如点击每个三级菜单项并等待页面加载
for (const thirdMenu of thirdMenus) {
await this.handleMenuClick(thirdMenu, menu.text);
// 如果不是最后一个菜单项,需要重新点击父菜单展开三级菜单
if (thirdMenu !== thirdMenus[thirdMenus.length - 1]) {
await menu.element.click();
await this.page.waitForTimeout(500);
}
}
} catch (error) {
console.error(`处理三级菜单时出错 [${menu.text}]:`, error.message);