第一次

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); await this.handleThreeLevelMenu(menu);
} else { } 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 菜单对象 * @param {Object} menu 菜单对象
*/ */
async handleThreeLevelMenu(menu) { async handleThreeLevelMenu(menu) {
try { try {
console.log(`正在处理 ${menu.text}菜单`) console.log(`正在处理 ${menu.text} 菜单`);
await menu.element.click(); await menu.element.click();
// 等待一个短暂的时间让弹出层出现 // 等待一个短暂的时间让弹出层出现
await this.page.waitForTimeout(500); await this.page.waitForTimeout(500);
// 检查三级菜单是否存在 // 获取三级菜单列表
const hasThirdMenu = await this.page.evaluate(() => { const thirdMenus = await this.getThirdLevelMenus(menu);
const elements = document.querySelectorAll('.el-popper.is-light.el-popover .menuTitle.canClick');
return elements.length > 0;
});
if (!hasThirdMenu) { if (thirdMenus.length === 0) {
console.log(`⚠️ ${menu.text} 没有找到三级菜单项`); console.log(`⚠️ ${menu.text} 没有找到三级菜单项`);
return; 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) { } catch (error) {
console.error(`处理三级菜单时出错 [${menu.text}]:`, error.message); console.error(`处理三级菜单时出错 [${menu.text}]:`, error.message);