ActivitySelectPage.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { Locator, Page } from '@playwright/test'
  2. export class ActivitySelectPage {
  3. readonly page: Page
  4. // 页面元素定位器
  5. readonly title: Locator
  6. readonly routeInfo: Locator
  7. readonly departureActivitiesTab: Locator
  8. readonly returnActivitiesTab: Locator
  9. readonly activityCards: Locator
  10. readonly noActivitiesText: Locator
  11. constructor(page: Page) {
  12. this.page = page
  13. // 初始化定位器
  14. this.title = page.locator('text=选择观看活动')
  15. this.routeInfo = page.locator('text=北京市 → 上海市')
  16. this.departureActivitiesTab = page.locator('text=去程活动')
  17. this.returnActivitiesTab = page.locator('text=返程活动')
  18. this.activityCards = page.locator('text=上海音乐节')
  19. this.noActivitiesText = page.locator('text=暂无相关活动')
  20. }
  21. // 页面操作方法
  22. async waitForPageLoad() {
  23. await this.page.waitForURL(/\/pages\/select-activity\/ActivitySelectPage/)
  24. }
  25. async selectActivity(activityName: string) {
  26. await this.page.click(`text=${activityName}`)
  27. }
  28. async switchToDepartureActivities() {
  29. await this.departureActivitiesTab.click()
  30. }
  31. async switchToReturnActivities() {
  32. await this.returnActivitiesTab.click()
  33. }
  34. async getActivityCount(): Promise<number> {
  35. return await this.activityCards.count()
  36. }
  37. async hasActivities(): Promise<boolean> {
  38. return await this.activityCards.first().isVisible()
  39. }
  40. async getRouteInfo(): Promise<string> {
  41. return await this.routeInfo.textContent() || ''
  42. }
  43. }