This repository has been archived on 2025-04-22. You can view files and clone it, but cannot push or open issues or pull requests.
hlk_autotest/tests/pages/report/spendingSummaryReport.ts
LingandRX 6517e4192c feat: 初始化慧来客自动化测试项目
- 添加项目配置文件和环境变量设置
- 创建测试用例目录结构和命名规范
- 实现基础测试 fixture 和页面对象模型
- 添加示例测试用例和数据生成器
- 配置 playwright 和 gitignore 文件
2024-12-22 19:18:27 +08:00

90 lines
3.2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { Page } from '@playwright/test';
import { reportData } from './reportPage';
export class SpendingSummaryReportPage {
page: Page;
_reportData: reportData[];
/**
* 开支汇总表
*/
constructor(page: Page) {
this.page = page;
this._reportData = [
{
name: '支出汇总',
content: [
{ name: '累计支出', value: 0, lastValue: 0, index: -1 },
{ name: '营业收入支出', value: 0, lastValue: 0, index: -1 },
{ name: '备用金支出', value: 0, lastValue: 0, index: -1 },
],
},
{
name: '日常开支',
content: [{ name: '顾客餐', value: 0, lastValue: 0, index: -1 }],
},
];
}
get reportData(): reportData[] {
return this._reportData;
}
/**
* 获取报表数据的列的index
*/
updateReportDataIndex = async (): Promise<void> => {
const thLocator = this.page.locator('.m-table__header-wrapper tr').last().locator('th');
await thLocator.first().waitFor();
const headers = await thLocator.allInnerTexts();
for (const category of this._reportData) {
for (const content of category.content!) {
// 拿取th.name列的列数
let index = -1;
let occurrence = 0;
index = headers.findIndex(headerText => {
if (headerText === content.name) {
occurrence++; // 每次找到相同的文本计数加1
if (category.name === '卖品销售') {
// 找到第二次出现的 content.name
return occurrence === 2;
} else {
// 找到第一次出现的 content.name
return occurrence === 1;
}
}
return false;
});
if (index !== -1) {
content.index = index + 1;
console.log(`${content.name} 列是第 ${index + 1}`);
} else {
throw new Error(`没有找到${content.name}`);
}
}
}
};
/**
*
* @param {1|2} store
*/
updateReportData = async (store: number): Promise<void> => {
const trLocator = this.page.locator('.main-table-body_tr').nth(store);
await trLocator.first().waitFor();
for (const category of this._reportData) {
for (const content of category.content!) {
// 保存上一次的数据
content.lastValue = content.value;
// 拿取当前的数据
const tdLocator = trLocator.locator('td');
const headers = await tdLocator.allInnerTexts();
if (headers.length === 0) {
throw new Error('没有获取到数据');
}
content.value = Number(headers[content.index!].trim() === '--' ? 0 : headers[content.index!].trim());
}
}
};
}