2
0

dashboard.page.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { Page, Locator, expect } from '@playwright/test';
  2. export class DashboardPage {
  3. readonly page: Page;
  4. readonly pageTitle: Locator;
  5. readonly activeUsersCard: Locator;
  6. readonly systemMessagesCard: Locator;
  7. readonly onlineUsersCard: Locator;
  8. readonly userManagementCard: Locator;
  9. readonly systemSettingsCard: Locator;
  10. constructor(page: Page) {
  11. this.page = page;
  12. this.pageTitle = page.getByRole('heading', { name: '仪表盘' });
  13. this.activeUsersCard = page.getByText('活跃用户');
  14. this.systemMessagesCard = page.getByText('系统消息');
  15. this.onlineUsersCard = page.getByText('在线用户');
  16. this.userManagementCard = page.getByText('用户管理');
  17. this.systemSettingsCard = page.getByText('系统设置');
  18. }
  19. async expectToBeVisible() {
  20. await expect(this.pageTitle).toBeVisible();
  21. await expect(this.activeUsersCard).toBeVisible();
  22. await expect(this.systemMessagesCard).toBeVisible();
  23. await expect(this.onlineUsersCard).toBeVisible();
  24. }
  25. async navigateToUserManagement() {
  26. await this.userManagementCard.click();
  27. await this.page.waitForLoadState('networkidle');
  28. }
  29. async navigateToSystemSettings() {
  30. await this.systemSettingsCard.click();
  31. await this.page.waitForLoadState('networkidle');
  32. }
  33. async getActiveUsersCount(): Promise<string> {
  34. return await this.activeUsersCard.locator('xpath=following-sibling::div//div[contains(@class, "text-2xl")]').textContent() || '';
  35. }
  36. async getSystemMessagesCount(): Promise<string> {
  37. return await this.systemMessagesCard.locator('xpath=following-sibling::div//div[contains(@class, "text-2xl")]').textContent() || '';
  38. }
  39. }