优化分批执行点击菜单
This commit is contained in:
parent
82fb7ebe96
commit
c08b274fbd
2
.env.dev
2
.env.dev
@ -10,7 +10,7 @@ TEST_MAX_RETRY_DELAY=5000
|
|||||||
|
|
||||||
# 超时配置
|
# 超时配置
|
||||||
MENU_TIME_OUT=30000
|
MENU_TIME_OUT=30000
|
||||||
EXPECT_TIMEOUT=30000
|
EXPECT_TIMEOUT=3600000
|
||||||
|
|
||||||
# 浏览器配置
|
# 浏览器配置
|
||||||
BROWSER_HEADLESS=false
|
BROWSER_HEADLESS=false
|
||||||
|
|||||||
@ -102,58 +102,18 @@ class LongiMainPage extends BasePage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检查菜单数据文件是否存在并加载数据
|
* 获取菜单项数据
|
||||||
*/
|
*/
|
||||||
async checkAndLoadMenuItems() {
|
async getMenuItems() {
|
||||||
try {
|
try {
|
||||||
// 加载JSON文件
|
await this.expandSideMenu();
|
||||||
const menuItems = FileUtils.loadFromJsonFile(process.env.MENU_DATA_FILE_PATH);
|
return await this.findMenuItems();
|
||||||
|
|
||||||
// 检查是否成功加载数据
|
|
||||||
if (menuItems && Array.isArray(menuItems) && menuItems.length > 0) {
|
|
||||||
console.log(`从文件 ${process.env.BASE_URL} 成功加载了 ${menuItems.length} 个菜单项`);
|
|
||||||
return menuItems;
|
|
||||||
} else {
|
|
||||||
await this.expandSideMenu();
|
|
||||||
return await this.findAndSaveMenuItems();
|
|
||||||
}
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// 文件操作错误需要被捕获并处理
|
console.error(`获取菜单项时出错: ${error}`);
|
||||||
console.error(`检查并加载菜单项时出错: ${error}`);
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 查找菜单项并保存到文件
|
|
||||||
*/
|
|
||||||
async findAndSaveMenuItems() {
|
|
||||||
// 查找菜单项
|
|
||||||
const menuItems = await this.findMenuItems();
|
|
||||||
|
|
||||||
// 如果没有找到菜单项,则返回空数组
|
|
||||||
if (!menuItems || menuItems.length === 0) {
|
|
||||||
console.warn('未找到任何菜单项,无法保存到文件');
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
// 过滤掉不能序列化的element属性
|
|
||||||
const menuItemsForSave = menuItems.map(({element, ...rest}) => rest);
|
|
||||||
|
|
||||||
// 保存到文件
|
|
||||||
FileUtils.saveToJsonFile(menuItemsForSave, process.env.MENU_DATA_FILE_PATH);
|
|
||||||
|
|
||||||
console.log(`已找到并保存 ${menuItems.length} 个菜单项到文件: ${process.env.MENU_DATA_FILE_PATH}`);
|
|
||||||
|
|
||||||
return menuItems;
|
|
||||||
} catch (error) {
|
|
||||||
// 文件操作错误需要被捕获
|
|
||||||
console.error('保存菜单项到文件时出错:', error);
|
|
||||||
return menuItems; // 即使保存失败也返回找到的菜单项
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查找所有菜单项
|
* 查找所有菜单项
|
||||||
* @returns {Promise<Array>} 菜单项数组
|
* @returns {Promise<Array>} 菜单项数组
|
||||||
@ -194,7 +154,6 @@ class LongiMainPage extends BasePage {
|
|||||||
|
|
||||||
// 检查是否有三级菜单指示器
|
// 检查是否有三级菜单指示器
|
||||||
const hasThirdLevelIndicator = await item.evaluate(el => {
|
const hasThirdLevelIndicator = await item.evaluate(el => {
|
||||||
// 检查是否有特定的三级菜单指示器
|
|
||||||
return el.classList.contains('is-opened') ||
|
return el.classList.contains('is-opened') ||
|
||||||
el.querySelector('.third-level-menu') !== null ||
|
el.querySelector('.third-level-menu') !== null ||
|
||||||
el.querySelector('.el-menu--inline') !== null;
|
el.querySelector('.el-menu--inline') !== null;
|
||||||
|
|||||||
@ -4,14 +4,14 @@ require('../../config/env');
|
|||||||
const { test } = require('@playwright/test');
|
const { test } = require('@playwright/test');
|
||||||
const TestController = require('../../src/controllers/LongiTestController');
|
const TestController = require('../../src/controllers/LongiTestController');
|
||||||
|
|
||||||
test.describe('菜单可访问性测试', () => {
|
test.describe('测试所有隆基需求计划是否可用', () => {
|
||||||
let controller;
|
let controller;
|
||||||
|
|
||||||
test.beforeAll(async () => {
|
test.beforeAll(async () => {
|
||||||
controller = new TestController();
|
controller = new TestController();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('应该能成功收集所有菜单数据', async () => {
|
test('获取最新菜单数据', async () => {
|
||||||
const menuData = await controller.collectMenuData();
|
const menuData = await controller.collectMenuData();
|
||||||
test.expect(menuData.length).toBeGreaterThan(0);
|
test.expect(menuData.length).toBeGreaterThan(0);
|
||||||
console.log(`✓ 成功收集 ${menuData.length} 个菜单项`);
|
console.log(`✓ 成功收集 ${menuData.length} 个菜单项`);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user