Files
everything-is-suitable/everything-is-suitable-test/e2e/uniapp/pages/user-page.ts
T
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

108 lines
3.2 KiB
TypeScript

import { BasePage } from './base-page';
export class UserPage extends BasePage {
private readonly selectors = {
pageTitle: '.page-title',
userAvatar: '.user-avatar',
userName: '.user-name',
userBio: '.user-bio',
statValue: '.stat-value',
statLabel: '.stat-label',
menuItem: '.menu-item',
menuTitle: '.menu-title',
menuSubtitle: '.menu-subtitle',
settingsItem: '.settings-item',
settingsLabel: '.settings-label',
settingsValue: '.settings-value',
};
async navigate() {
await this.page.goto(`${this.baseURL}/pages/user/index`);
await this.waitForLoad();
}
async getPageTitle(): Promise<string> {
return await this.getText(this.selectors.pageTitle);
}
async isUserAvatarVisible(): Promise<boolean> {
return await this.isVisible(this.selectors.userAvatar);
}
async getUserName(): Promise<string> {
return await this.getText(this.selectors.userName);
}
async getUserBio(): Promise<string> {
return await this.getText(this.selectors.userBio);
}
async getStatValues(): Promise<string[]> {
const elements = await this.page.$$(this.selectors.statValue);
const values: string[] = [];
for (const element of elements) {
values.push(await element.textContent() || '');
}
return values;
}
async getStatLabels(): Promise<string[]> {
const elements = await this.page.$$(this.selectors.statLabel);
const labels: string[] = [];
for (const element of elements) {
labels.push(await element.textContent() || '');
}
return labels;
}
async clickMenuItem(index: number) {
const menuItems = await this.page.$$(this.selectors.menuItem);
if (menuItems[index]) {
await menuItems[index].click();
}
}
async getMenuItemTitle(index: number): Promise<string> {
const menuItems = await this.page.$$(this.selectors.menuItem);
if (menuItems[index]) {
const titleElement = await menuItems[index].$(this.selectors.menuTitle);
return await titleElement?.textContent() || '';
}
return '';
}
async getMenuItemSubtitle(index: number): Promise<string> {
const menuItems = await this.page.$$(this.selectors.menuItem);
if (menuItems[index]) {
const subtitleElement = await menuItems[index].$(this.selectors.menuSubtitle);
return await subtitleElement?.textContent() || '';
}
return '';
}
async clickSettingsItem(index: number) {
const settingsItems = await this.page.$$(this.selectors.settingsItem);
if (settingsItems[index]) {
await settingsItems[index].click();
}
}
async getSettingsLabel(index: number): Promise<string> {
const settingsItems = await this.page.$$(this.selectors.settingsItem);
if (settingsItems[index]) {
const labelElement = await settingsItems[index].$(this.selectors.settingsLabel);
return await labelElement?.textContent() || '';
}
return '';
}
async getSettingsValue(index: number): Promise<string> {
const settingsItems = await this.page.$$(this.selectors.settingsItem);
if (settingsItems[index]) {
const valueElement = await settingsItems[index].$(this.selectors.settingsValue);
return await valueElement?.textContent() || '';
}
return '';
}
}