优化分批执行点击菜单
This commit is contained in:
parent
970d194ab3
commit
2f6456f027
BIN
login-error.png
Normal file
BIN
login-error.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 228 KiB |
@ -213,7 +213,7 @@ class BasePage {
|
||||
if (!isLoading) {
|
||||
await this.waitForTimeout(stabilityDelay);
|
||||
console.log(`✅ 页面 ${pageName} 加载完成`);
|
||||
|
||||
|
||||
// 记录成功的性能数据
|
||||
await performanceService.recordSuccess(pageName, startTime, Date.now());
|
||||
return true;
|
||||
@ -292,6 +292,14 @@ class BasePage {
|
||||
await this.page.waitForTimeout(ms);
|
||||
}
|
||||
|
||||
async waitForVisible(selectors) {
|
||||
await this.page.locator(selectors).waitFor({
|
||||
state: 'visible',
|
||||
timeout: 10000
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 检查元素是否存在
|
||||
* @param {string} selector 元素选择器
|
||||
|
||||
@ -1,8 +1,4 @@
|
||||
const BasePage = require('./BasePage');
|
||||
const dotenv = require('dotenv');
|
||||
|
||||
// 确保环境变量已加载
|
||||
dotenv.config({ path: '.env.dev' });
|
||||
|
||||
class LongiLoginPage extends BasePage {
|
||||
/**
|
||||
@ -100,7 +96,10 @@ class LongiLoginPage extends BasePage {
|
||||
* @param {string} username 用户名
|
||||
*/
|
||||
async enterUsername(username) {
|
||||
await this.page.locator(this.selectors.usernameInput).fill('');
|
||||
await this.fill(this.selectors.usernameInput, username);
|
||||
// 等待输入稳定
|
||||
await this.page.waitForTimeout(1000);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -108,50 +107,51 @@ class LongiLoginPage extends BasePage {
|
||||
* @param {string} password 密码
|
||||
*/
|
||||
async enterPassword(password) {
|
||||
await this.page.locator(this.selectors.passwordInput).fill('');
|
||||
await this.fill(this.selectors.passwordInput, password);
|
||||
// 等待输入稳定
|
||||
await this.page.waitForTimeout(1000);
|
||||
}
|
||||
|
||||
/**
|
||||
* 输入验证码
|
||||
* @param {string} captcha 验证码
|
||||
*/
|
||||
async enterCaptcha(captcha) {
|
||||
await this.fill(this.selectors.captchaInput, captcha);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取验证码图片元素
|
||||
* @returns {Promise<import('@playwright/test').Locator>} 验证码图片元素
|
||||
*/
|
||||
async getCaptchaImage() {
|
||||
return this.waitForElement(this.selectors.captchaImage);
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行登录操作
|
||||
* @param {string} [username] - 用户名,默认使用配置的用户名
|
||||
* @param {string} [password] - 密码,默认使用配置的密码
|
||||
* @returns {Promise<boolean>} 登录是否成功
|
||||
*/
|
||||
async login() {
|
||||
try {
|
||||
// 清空用户名输入框
|
||||
await this.page.locator(this.selectors.usernameInput).fill('');
|
||||
// 清空密码输入框
|
||||
await this.page.locator(this.selectors.passwordInput).fill('');
|
||||
|
||||
// 输入用户名和密码
|
||||
console.log('开始登录流程...');
|
||||
console.log('使用的登录信息:', {
|
||||
username: process.env.IBP_USERNAME,
|
||||
baseUrl: process.env.BASE_URL
|
||||
});
|
||||
|
||||
// 确保页面已加载
|
||||
await this.waitForPageLoad();
|
||||
|
||||
await this.waitForVisible(this.selectors.usernameInput);
|
||||
console.log('用户名输入框已就绪');
|
||||
|
||||
// 清空并输入用户名
|
||||
await this.enterUsername(process.env.IBP_USERNAME);
|
||||
console.log('用户名已输入');
|
||||
|
||||
await this.waitForVisible(this.selectors.passwordInput);
|
||||
console.log('密码输入框已就绪');
|
||||
|
||||
await this.enterPassword(process.env.IBP_PASSWORD);
|
||||
|
||||
// 点击登录按钮并等待登录完成
|
||||
if (await this.clickLoginButton()) {
|
||||
return await this.isLoginSuccessful();
|
||||
console.log('密码已输入');
|
||||
|
||||
// 点击登录按钮
|
||||
console.log('准备点击登录按钮...');
|
||||
const loginSuccess = await this.clickLoginButton();
|
||||
if (!loginSuccess) {
|
||||
throw new error('登录失败')
|
||||
}
|
||||
return false;
|
||||
} catch (error) {
|
||||
console.error('登录过程出错:', error.message);
|
||||
return false;
|
||||
console.error('登录过程出错:', error);
|
||||
// 记录更多错误信息
|
||||
console.error('错误堆栈:', error.stack);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -59,10 +59,7 @@ class LongiTestService {
|
||||
async performLogin(page) {
|
||||
const loginPage = new LongiLoginPage(page);
|
||||
await loginPage.navigateToLoginPage();
|
||||
const loginSuccess = await loginPage.login()
|
||||
if (!loginSuccess) {
|
||||
throw new Error('登录失败');
|
||||
}
|
||||
await loginPage.login()
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user