优化分批执行点击菜单
This commit is contained in:
parent
c08b274fbd
commit
03e91a0ff9
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -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 - 从页面获取的原始菜单项
|
||||
|
||||
@ -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();
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user