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