47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import { expect, Page } from '@playwright/test';
|
|
|
|
export class CustomerDetailsPage {
|
|
page: Page;
|
|
subPages: { name: string; url?: string[] }[];
|
|
/**
|
|
* 顾客详情页面
|
|
*/
|
|
constructor(page: Page) {
|
|
this.page = page;
|
|
this.subPages = [
|
|
{ name: '基本资料' },
|
|
{ name: '流水' },
|
|
{ name: '动态' },
|
|
{ name: '日志' }
|
|
];
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param subPageName 子页面名称
|
|
* - 基本资料
|
|
* - 流水
|
|
* - 动态
|
|
* - 日志
|
|
*/
|
|
gotoSubPage = async (subPageName: string) => {
|
|
// 标准化输入字符串,去除前后空格并统一为小写
|
|
const normalizedSubPageName = subPageName.trim().toLowerCase();
|
|
|
|
// 检查子页面是否存在
|
|
if (!this.subPages.some(e => e.name.trim().toLowerCase() === normalizedSubPageName)) {
|
|
throw new Error(`${subPageName} is not in the subPages list`);
|
|
}
|
|
|
|
try {
|
|
// 获取子页面元素并点击
|
|
const $subPage = this.page.getByRole('tab', { name: subPageName });
|
|
await $subPage.click();
|
|
await expect($subPage).toHaveClass(/active/);
|
|
} catch (error) {
|
|
// 捕获并抛出更明确的错误信息
|
|
throw new Error(`Failed to navigate to ${subPageName}: ${error.message}`);
|
|
}
|
|
};
|
|
}
|