import { Page, expect } from '@playwright/test'; export class FileManagementPage { readonly page: Page; readonly uploadButton; readonly fileInput; readonly table; readonly deleteButton; readonly downloadButton; readonly searchInput; constructor(page: Page) { this.page = page; this.uploadButton = page.locator('.el-upload--text').first(); this.fileInput = page.locator('input[type="file"]'); this.table = page.locator('.el-table'); this.deleteButton = page.getByRole('button', { name: '删除' }); this.downloadButton = page.getByRole('button', { name: '下载' }); this.searchInput = page.locator('.search-bar .el-input__inner'); } async goto() { await this.page.goto('/files'); await this.page.waitForLoadState('networkidle'); await this.page.waitForTimeout(3000); } async uploadFile(filePath: string) { await this.uploadButton.waitFor({ state: 'visible', timeout: 10000 }); await this.uploadButton.click(); const fileInput = this.page.locator('input[type="file"]'); await fileInput.setInputFiles(filePath); await this.page.waitForTimeout(1000); } async deleteFile(fileName: string) { const row = this.table.locator('tr').filter({ hasText: fileName }).first(); await row.locator('.el-button--danger').click(); const confirmButton = this.page.getByRole('button', { name: '确定' }); await confirmButton.click(); await this.page.waitForLoadState('networkidle'); } async downloadFile(fileName: string) { const row = this.table.locator('tr').filter({ hasText: fileName }).first(); const downloadButton = row.locator('.el-button--primary').first(); await downloadButton.click(); } async searchFile(keyword: string) { await this.searchInput.fill(keyword); await this.page.waitForTimeout(500); } async clearSearch() { await this.searchInput.clear(); await this.page.waitForTimeout(500); } async verifyTableContains(text: string) { await expect(this.table).toContainText(text); } async verifyTableNotContains(text: string) { await expect(this.table).not.toContainText(text); } async getTableRowCount() { const rows = await this.table.locator('.el-table__row').count(); return rows; } }