优化分批执行点击菜单

This commit is contained in:
dengqichen 2025-03-07 14:34:48 +08:00
parent c08b274fbd
commit 03e91a0ff9
3 changed files with 49 additions and 27 deletions

View File

@ -58,29 +58,11 @@ class LongiTestController {
}
/**
* 收集菜单数据
* @returns {Promise<Array>} - 处理后的菜单数据
* 获取并保存菜单数据
* @returns {Promise<Array>} 菜单数据数组
*/
async collectMenuData() {
console.log('开始收集菜单数据...');
let browser, page;
try {
({browser, page} = await this.createBrowser());
const mainPage = new LongiMainPage(page);
if (!await this.performLogin(page)) {
throw new Error('登录失败,无法收集菜单数据');
}
const menuItems = await mainPage.checkAndLoadMenuItems();
return menuDataService.saveMenuData(menuItems);
} catch (error) {
console.error('收集菜单数据失败:', error);
throw error;
} finally {
if (browser) await browser.close();
}
async fetchAndSaveMenuData() {
return await menuDataService.fetchAndSaveMenuData();
}
/**

View File

@ -1,5 +1,8 @@
const fs = require('fs');
const path = require('path');
const LongiMainPage = require('../pages/LongiMainPage');
const LongiLoginPage = require('../pages/LongiLoginPage');
const {chromium} = require('@playwright/test');
/**
* 菜单数据服务
@ -8,9 +11,9 @@ const path = require('path');
class LongiTestService {
constructor() {
// 从环境变量获取路径配置
this.dataDir = path.join(process.cwd(), process.env.TEST_DATA_DIR || 'test-data');
this.menuDataPath = path.join(process.cwd(), process.env.MENU_DATA_FILE_PATH || 'test-data/menu-data.json');
this.progressPath = path.join(process.cwd(), process.env.TEST_PROGRESS_FILE_PATH || 'test-data/test-progress.json');
this.dataDir = path.join(process.cwd(), process.env.TEST_DATA_DIR);
this.menuDataPath = process.env.MENU_DATA_FILE_PATH;
this.progressPath = process.env.TEST_PROGRESS_FILE_PATH;
// 确保数据目录存在
if (!fs.existsSync(this.dataDir)) {
@ -18,6 +21,43 @@ class LongiTestService {
}
}
/**
* 获取并保存菜单数据
* @returns {Promise<Array>} 菜单数据数组
*/
async fetchAndSaveMenuData() {
console.log('开始获取菜单数据...');
let browser, page;
try {
browser = await chromium.launch();
page = await browser.newPage();
// 登录
const loginPage = new LongiLoginPage(page);
await loginPage.navigateToLoginPage();
const loginSuccess = await loginPage.clickLoginButton();
if (!loginSuccess) {
throw new Error('登录失败,无法获取菜单数据');
}
// 获取菜单数据
const mainPage = new LongiMainPage(page);
const menuItems = await mainPage.getMenuItems();
// 保存数据
await this.saveMenuData(menuItems);
return menuItems;
} catch (error) {
console.error(`获取并保存菜单数据时出错: ${error}`);
return null;
} finally {
if (browser) await browser.close();
}
}
/**
* 保存菜单数据
* @param {Array} menuItems - 从页面获取的原始菜单项

View File

@ -12,12 +12,12 @@ test.describe('测试所有隆基需求计划是否可用', () => {
});
test('获取最新菜单数据', async () => {
const menuData = await controller.collectMenuData();
const menuData = await controller.fetchAndSaveMenuData();
test.expect(menuData.length).toBeGreaterThan(0);
console.log(`✓ 成功收集 ${menuData.length} 个菜单项`);
});
test('应该能访问所有菜单页面', async () => {
test('访问并点击所有页面', async () => {
// 开始批量测试
const result = await controller.runAllTests();