第一次
This commit is contained in:
parent
6b5982bd2e
commit
90882138f0
@ -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);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user