优化分批执行点击菜单
This commit is contained in:
parent
c08b274fbd
commit
03e91a0ff9
@ -58,29 +58,11 @@ class LongiTestController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 收集菜单数据
|
* 获取并保存菜单数据
|
||||||
* @returns {Promise<Array>} - 处理后的菜单数据
|
* @returns {Promise<Array>} 菜单数据数组
|
||||||
*/
|
*/
|
||||||
async collectMenuData() {
|
async fetchAndSaveMenuData() {
|
||||||
console.log('开始收集菜单数据...');
|
return await menuDataService.fetchAndSaveMenuData();
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1,5 +1,8 @@
|
|||||||
const fs = require('fs');
|
const fs = require('fs');
|
||||||
const path = require('path');
|
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 {
|
class LongiTestService {
|
||||||
constructor() {
|
constructor() {
|
||||||
// 从环境变量获取路径配置
|
// 从环境变量获取路径配置
|
||||||
this.dataDir = path.join(process.cwd(), process.env.TEST_DATA_DIR || 'test-data');
|
this.dataDir = path.join(process.cwd(), process.env.TEST_DATA_DIR);
|
||||||
this.menuDataPath = path.join(process.cwd(), process.env.MENU_DATA_FILE_PATH || 'test-data/menu-data.json');
|
this.menuDataPath = process.env.MENU_DATA_FILE_PATH;
|
||||||
this.progressPath = path.join(process.cwd(), process.env.TEST_PROGRESS_FILE_PATH || 'test-data/test-progress.json');
|
this.progressPath = process.env.TEST_PROGRESS_FILE_PATH;
|
||||||
|
|
||||||
// 确保数据目录存在
|
// 确保数据目录存在
|
||||||
if (!fs.existsSync(this.dataDir)) {
|
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 - 从页面获取的原始菜单项
|
* @param {Array} menuItems - 从页面获取的原始菜单项
|
||||||
|
|||||||
@ -12,12 +12,12 @@ test.describe('测试所有隆基需求计划是否可用', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('获取最新菜单数据', async () => {
|
test('获取最新菜单数据', async () => {
|
||||||
const menuData = await controller.collectMenuData();
|
const menuData = await controller.fetchAndSaveMenuData();
|
||||||
test.expect(menuData.length).toBeGreaterThan(0);
|
test.expect(menuData.length).toBeGreaterThan(0);
|
||||||
console.log(`✓ 成功收集 ${menuData.length} 个菜单项`);
|
console.log(`✓ 成功收集 ${menuData.length} 个菜单项`);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('应该能访问所有菜单页面', async () => {
|
test('访问并点击所有页面', async () => {
|
||||||
// 开始批量测试
|
// 开始批量测试
|
||||||
const result = await controller.runAllTests();
|
const result = await controller.runAllTests();
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user