class WorklistPage { getTable() { return cy.get('table'); } findTableAndDoubleClickFirstRow() { cy.get('table').within(() => { cy.get('tbody tr[data-testid="row-0"]') .scrollIntoView() .should('be.visible') .dblclick({ force: true }); }); } /** * 获取表头(排除第一列选择框) */ getTableHeaders() { return cy.get('table thead th').not(':first'); } /** * 获取所有表头 */ getAllTableHeaders() { return cy.get('table thead th'); } /** * 获取特定列 * @param columnName 列名文本 */ getColumn(columnName: string) { return cy.get('table thead th').contains(columnName); } /** * 验证列存在 * @param columnName 列名文本 */ columnExists(columnName: string) { return this.getTableHeaders().contains(columnName).should('exist'); } /** * 验证列不存在 * @param columnName 列名文本 */ columnNotExists(columnName: string) { return this.getTableHeaders().contains(columnName).should('not.exist'); } /** * 获取列宽 * @param columnName 列名文本 */ getColumnWidth(columnName: string) { return cy .get('table thead th') .contains(columnName) .invoke('width'); } /** * 验证列的顺序 * @param expectedOrder 期望的列名顺序数组 */ verifyColumnOrder(expectedOrder: string[]) { this.getTableHeaders().then(($headers) => { expectedOrder.forEach((columnName, index) => { cy.wrap($headers.eq(index)).should('contain', columnName); }); }); } /** * 获取表头数量 */ getHeaderCount() { return this.getTableHeaders().its('length'); } /** * 点击指定索引的行 * @param index 行索引(从0开始) */ clickRowByIndex(index: number) { cy.get('table').within(() => { cy.get(`tbody tr[data-testid="row-${index}"]`) .scrollIntoView() .should('be.visible') .click({ force: true }); }); } /** * 验证指定行被选中(黄色高亮) * @param index 行索引(从0开始) */ verifyRowSelected(index: number) { cy.get('table').within(() => { cy.get(`tbody tr[data-testid="row-${index}"]`) .should('be.visible') .should('have.class', 'bg-yellow-500'); }); } /** * 点击删除按钮 */ clickDeleteButton() { cy.get('[data-testid="delete-button"]').click(); } /** * 获取删除确认对话框 */ getDeleteConfirmModal() { return cy.get('.ant-modal-confirm').should('be.visible'); } /** * 在对话框中确认删除 */ confirmDeleteInModal() { cy.get('[data-testid="modal-confirm-delete"]').click(); } /** * 在对话框中取消删除 */ cancelDeleteInModal() { cy.get('[data-testid="modal-cancel-delete"]').click(); } /** * 验证删除成功提示消息 */ verifyDeleteSuccessMessage() { cy.contains('删除成功').should('be.visible'); } /** * 验证删除警告消息 * @param expectedMessage 期望的警告消息文本 */ verifyDeleteWarningMessage(expectedMessage: string) { cy.contains(expectedMessage).should('be.visible'); } /** * 验证删除错误消息 */ verifyDeleteErrorMessage() { cy.contains('删除失败').should('be.visible'); } /** * 验证表格行数 * @param expectedCount 期望的行数 */ verifyRowCount(expectedCount: number) { cy.get('table tbody tr').should('have.length.at.least', expectedCount); } /** * 验证对话框不存在 */ verifyModalNotExist() { cy.get('.ant-modal-confirm').should('not.exist'); } } export default WorklistPage;