ExamPage.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. /**
  2. * ExamPage - 检查页面Page Object Model
  3. * 用于检查界面的元素选择器和操作方法
  4. */
  5. class ExamPage {
  6. /**
  7. * 获取检查页面主容器
  8. */
  9. getExamPage() {
  10. return cy.get('[data-testid="exam-page"]');
  11. }
  12. /**
  13. * 获取工具栏(设备区域)
  14. */
  15. getToolbar() {
  16. return cy.get('[data-testid="exam-toolbar"]');
  17. }
  18. /**
  19. * 获取内容区域
  20. */
  21. getContentArea() {
  22. return cy.get('[data-testid="exam-content-area"]');
  23. }
  24. /**
  25. * 获取患者信息区域
  26. * TODO: 需要在ContentAreaLarge中添加此data-testid
  27. */
  28. getPatientInfo() {
  29. return cy.get('[data-testid="exam-patient-info"]');
  30. }
  31. /**
  32. * 获取患者姓名
  33. * TODO: 需要在患者信息组件中添加此data-testid
  34. */
  35. getPatientName() {
  36. return cy.get('[data-testid="exam-patient-name"]');
  37. }
  38. /**
  39. * 获取检查ID
  40. * TODO: 需要在患者信息组件中添加此data-testid
  41. */
  42. getStudyId() {
  43. return cy.get('[data-testid="exam-study-id"]');
  44. }
  45. /**
  46. * 验证检查界面已加载
  47. */
  48. verifyExamPageLoaded() {
  49. // 验证检查页面主容器可见
  50. this.getExamPage().should('be.visible');
  51. // 验证工具栏可见
  52. this.getToolbar().should('be.visible');
  53. // 验证内容区域可见
  54. this.getContentArea().should('be.visible');
  55. }
  56. /**
  57. * 获取重置高压发生器按钮
  58. */
  59. getResetGeneratorButton() {
  60. return cy.get('[data-testid="reset-generator-btn"]');
  61. }
  62. /**
  63. * 点击重置按钮
  64. */
  65. clickResetGenerator() {
  66. this.getResetGeneratorButton().click();
  67. }
  68. /**
  69. * 验证重置按钮为启用状态
  70. */
  71. verifyResetButtonEnabled() {
  72. this.getResetGeneratorButton()
  73. .should('be.visible')
  74. .should('not.be.disabled');
  75. }
  76. /**
  77. * 验证重置按钮为禁用状态
  78. */
  79. verifyResetButtonDisabled() {
  80. this.getResetGeneratorButton()
  81. .should('be.visible')
  82. .should('be.disabled');
  83. }
  84. /**
  85. * 等待重置操作完成
  86. */
  87. waitForResetComplete() {
  88. cy.wait('@resetDevice');
  89. this.verifyResetButtonEnabled();
  90. }
  91. /**
  92. * 验证Redux设备状态
  93. * @param expectedStatus - 期望的状态: 'idle' | 'loading' | 'succeeded' | 'failed'
  94. */
  95. verifyDeviceStatus(expectedStatus: string) {
  96. cy.window()
  97. .its('store')
  98. .invoke('getState')
  99. .its('device')
  100. .its('status')
  101. .should('eq', expectedStatus);
  102. }
  103. /**
  104. * 验证设备错误信息
  105. * @param expectedError - 期望的错误信息,null表示无错误
  106. */
  107. verifyDeviceError(expectedError: string | null) {
  108. cy.window()
  109. .its('store')
  110. .invoke('getState')
  111. .its('device')
  112. .its('error')
  113. .should('eq', expectedError);
  114. }
  115. }
  116. export default ExamPage;