From 90882138f0952b1425cddacc50a6b20d3717376c Mon Sep 17 00:00:00 2001 From: dengqichen Date: Wed, 5 Mar 2025 16:31:02 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/pages/LongiMainPage.js | 68 ++++++++++++++++++++++++++++++------ 1 file changed, 58 insertions(+), 10 deletions(-) diff --git a/tests/pages/LongiMainPage.js b/tests/pages/LongiMainPage.js index 9c60de7..dac47a5 100644 --- a/tests/pages/LongiMainPage.js +++ b/tests/pages/LongiMainPage.js @@ -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} 三级菜单项数组 + * @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);