优化分批执行点击菜单

This commit is contained in:
dengqichen 2025-03-07 17:29:21 +08:00
parent 40863e3eca
commit 970d194ab3
5 changed files with 67 additions and 37 deletions

View File

@ -1,24 +1,33 @@
# 基础配置
BASE_URL=https://ibp-dev.longi.com
# 登录配置
IBP_USERNAME=admin
IBP_PASSWORD=123456
# 测试配置
TEST_DATA_DIR=test-data
TEST_BATCH_SIZE=5
TEST_RETRY_COUNT=3
TEST_BATCH_INTERVAL=1000
TEST_MAX_RETRY_DELAY=5000
TEST_BATCH_INTERVAL=2000
TEST_MAX_RETRY_DELAY=10000
# 超时配置
MENU_TIME_OUT=30000
MENU_TIME_OUT=60000
EXPECT_TIMEOUT=3600000
# 浏览器配置
BROWSER_HEADLESS=false
BROWSER_SLOW_MO=50
BROWSER_TIMEOUT=30000
BROWSER_SLOW_MO=100
BROWSER_TIMEOUT=120000
VIEWPORT_WIDTH=1920
VIEWPORT_HEIGHT=1080
# 数据目录配置
MENU_DATA_FILE_PATH=test-data/menu-data.json
TEST_PROGRESS_FILE_PATH=test-data/test-progress.json
TEST_PROGRESS_FILE_PATH=test-data/test-progress.json
# 页面加载配置
PAGE_LOAD_MAX_RETRIES=5
PAGE_LOAD_RETRY_INTERVAL=3000
PAGE_LOAD_STABILITY_DELAY=2000

View File

@ -1,2 +1,31 @@
# 基础URL
BASE_URL=https://ibp-uat.longi.com
# 基础配置
BASE_URL=https://ibp-test.longi.com/main/#/login?debug=ly
USERNAME=zidonghuatest
PASSWORD=Lianyu_123
# 测试配置
TEST_DATA_DIR=test-data
TEST_BATCH_SIZE=5
TEST_RETRY_COUNT=3
TEST_BATCH_INTERVAL=1000
TEST_MAX_RETRY_DELAY=5000
# 超时配置
MENU_TIME_OUT=30000
EXPECT_TIMEOUT=3600000
# 浏览器配置
BROWSER_HEADLESS=false
BROWSER_SLOW_MO=50
BROWSER_TIMEOUT=60000
VIEWPORT_WIDTH=1920
VIEWPORT_HEIGHT=1080
# 数据目录配置
MENU_DATA_FILE_PATH=test-data/menu-data.json
TEST_PROGRESS_FILE_PATH=test-data/test-progress.json
# 页面加载配置
PAGE_LOAD_MAX_RETRIES=5
PAGE_LOAD_RETRY_INTERVAL=2000
PAGE_LOAD_STABILITY_DELAY=1000

View File

@ -1,4 +1,8 @@
const BasePage = require('./BasePage');
const dotenv = require('dotenv');
// 确保环境变量已加载
dotenv.config({ path: '.env.dev' });
class LongiLoginPage extends BasePage {
/**
@ -125,17 +129,22 @@ class LongiLoginPage extends BasePage {
/**
* 执行登录操作
* @param {string} username 用户名
* @param {string} password 密码
* @param {string} captcha 验证码
* @param {string} [username] - 用户名默认使用配置的用户名
* @param {string} [password] - 密码默认使用配置的密码
* @returns {Promise<boolean>} 登录是否成功
*/
async login(username, password, captcha) {
async login() {
try {
await this.enterUsername(username);
await this.enterPassword(password);
await this.enterCaptcha(captcha);
// 清空用户名输入框
await this.page.locator(this.selectors.usernameInput).fill('');
// 清空密码输入框
await this.page.locator(this.selectors.passwordInput).fill('');
// 输入用户名和密码
await this.enterUsername(process.env.IBP_USERNAME);
await this.enterPassword(process.env.IBP_PASSWORD);
// 点击登录按钮并等待登录完成
if (await this.clickLoginButton()) {
return await this.isLoginSuccessful();
}

View File

@ -59,8 +59,7 @@ class LongiTestService {
async performLogin(page) {
const loginPage = new LongiLoginPage(page);
await loginPage.navigateToLoginPage();
const loginSuccess = await loginPage.clickLoginButton();
const loginSuccess = await loginPage.login()
if (!loginSuccess) {
throw new Error('登录失败');
}
@ -150,23 +149,13 @@ class LongiTestService {
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('登录失败,无法获取菜单数据');
}
await this.performLogin(page);
// 获取菜单数据
const mainPage = new LongiMainPage(page);
const menuItems = await mainPage.getMenuItems();
// 保存数据
await this.saveMenuData(menuItems);
this.saveMenuData(menuItems);
return menuItems;
} catch (error) {
console.error(`获取并保存菜单数据时出错: ${error}`);

View File

@ -1,7 +1 @@
[
1,
2,
3,
4,
5
]
[]