From bf3d9cb7cd6d9990ad1e24adeb047343ef215e0d Mon Sep 17 00:00:00 2001
From: yj <2077506045@qq.com>
Date: 星期三, 24 七月 2024 09:12:42 +0800
Subject: [PATCH] 测评系统自动测试

---
 elements/maq_answer_elements.py |   13 
 testcase/test_1login.py         |    0 
 po/maq_answer_page.py           |   92 ++++++++
 base/base_page.py               |    2 
 .idea/tal_autoTest.iml          |    2 
 testcase/test_ciaq.py           |   82 +-----
 testcase/test_main.py           |  101 +++++++++
 .idea/misc.xml                  |    2 
 report/report.html              |  172 ---------------
 po/share_add_page.py            |    4 
 testcase/test_jaq.py            |   87 ++-----
 main.py                         |    7 
 po/test_package_list_page.py    |    1 
 po/jaq_answer_page.py           |   12 
 testcase/conftest.py            |   16 +
 data/test_data.json             |    1 
 po/ciaq_answer_page.py          |   24 +-
 17 files changed, 287 insertions(+), 331 deletions(-)

diff --git a/.idea/misc.xml b/.idea/misc.xml
index 9da9111..185a49d 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <project version="4">
-  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.11 (tal_autoTest)" project-jdk-type="Python SDK" />
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.10 (tal_autoTest)" project-jdk-type="Python SDK" />
 </project>
\ No newline at end of file
diff --git a/.idea/tal_autoTest.iml b/.idea/tal_autoTest.iml
index b18914c..0dfc7e7 100644
--- a/.idea/tal_autoTest.iml
+++ b/.idea/tal_autoTest.iml
@@ -4,7 +4,7 @@
     <content url="file://$MODULE_DIR$">
       <excludeFolder url="file://$MODULE_DIR$/venv" />
     </content>
-    <orderEntry type="jdk" jdkName="Python 3.11 (tal_autoTest)" jdkType="Python SDK" />
+    <orderEntry type="jdk" jdkName="Python 3.10 (tal_autoTest)" jdkType="Python SDK" />
     <orderEntry type="sourceFolder" forTests="false" />
   </component>
 </module>
\ No newline at end of file
diff --git a/base/base_page.py b/base/base_page.py
index aba837a..48f4473 100644
--- a/base/base_page.py
+++ b/base/base_page.py
@@ -1,7 +1,7 @@
 import importlib
 import time
 
-from selenium.common import StaleElementReferenceException, ElementClickInterceptedException
+from selenium.common.exceptions import StaleElementReferenceException, ElementClickInterceptedException
 from selenium.webdriver.remote.webelement import WebElement
 from selenium.webdriver.support.wait import WebDriverWait
 from selenium.webdriver.support import expected_conditions as EC
diff --git a/data/test_data.json b/data/test_data.json
index 9370051..3d86b8a 100644
--- a/data/test_data.json
+++ b/data/test_data.json
@@ -605,6 +605,7 @@
   },
 
   "MAQ": {
+    "share_url": "http://tai-online.com/exam/testMember/shareAdd?packageId=VG5wbk1BPT0=",
     "menu": "娴嬭瘯鍖呯鐞�/娴嬭瘯鍖呭垪琛�",
     "add": {
       "company": "TAI娴嬭瘯",
diff --git a/elements/maq_answer_elements.py b/elements/maq_answer_elements.py
index 5f0a9ad..8490d10 100644
--- a/elements/maq_answer_elements.py
+++ b/elements/maq_answer_elements.py
@@ -14,17 +14,19 @@
 
 class MAQAnswerElements:
     # 寮�濮嬫祴璇曟寜閽�
-    start_btn = (By.XPATH, "//button")
+    start_btn = (By.XPATH, "//button[1]")
     # 棰樼洰
     q_title = (By.XPATH, "//div[@class='q-title']")
     # 棰樼洰閫夐」
-    options = (By.XPATH, "//span[@class='q-item-span-content']")
+    options = (By.XPATH, "//label[@class='el-radio']")
     # 绂佺敤鐨勯�夐」
     disabled = (By.XPATH, "//label[@aria-disabled='true']")
     # 缁х画娴嬭瘯鎸夐挳
-    continue_testing_btn = (By.XPATH, "//button/span[text()='缁х画娴嬭瘯']")
+    continue_testing_btn = (By.XPATH, "//button[1]")
     # 鎻愪氦鎸夐挳
-    submit_btn = (By.XPATH, "//button/span[contains(text(),'鎻愪氦')]/..")
+    submit_btn = (By.XPATH, "//button[2]")
+    # 缁冧範鎻愪氦鎸夐挳
+    exercise_submit_btn = (By.XPATH, "//button[1]")
     # 涓婁紶鎴愬姛鏍囬
     upload_success_title = (By.XPATH, "//main/h2[contains(text(), '鏁版嵁宸茬粡鎴愬姛鍦颁笂浼犺嚦鏈嶅姟鍣�')]")
     # 涓婁紶鎴愬姛鏍囬
@@ -38,3 +40,6 @@
 
     # 鏍囬鏂囧瓧
     title = (By.XPATH, "//div[@class='align-center']/span[2]")
+
+    # 鍏抽棴鎸夐挳
+    close_btn = (By.XPATH, "//button[1]")
diff --git a/main.py b/main.py
index fa7772c..c469250 100644
--- a/main.py
+++ b/main.py
@@ -1,11 +1,8 @@
-import time
-
 import pytest
-import pytest_html
-
+import os
 
 def run_testcases():
-    pytest.main(['-vs', '--html=report/report.html', 'testcase'])
+    pytest.main(['-vs', '--html=report/report.html', 'testcase/test_main.py'])
 
 
 if __name__ == '__main__':
diff --git a/po/ciaq_answer_page.py b/po/ciaq_answer_page.py
index 6a55341..e16ebc2 100644
--- a/po/ciaq_answer_page.py
+++ b/po/ciaq_answer_page.py
@@ -1,7 +1,7 @@
 import random
 
 from base.base_page import BasePage
-from elements.ciaq_answer_elements import CIAQAnswerElements as Answer
+from elements.ciaq_answer_elements import CIAQAnswerElements
 from selenium.common.exceptions import *
 
 import time
@@ -13,24 +13,26 @@
     """
     loading_count = 0
 
+    es = CIAQAnswerElements
+
     def answer(self):
         # 鏆傚仠3绉�
         time.sleep(3)
         while True:
             # 缁х画娴嬭瘯鎸夐挳鍑虹幇鍒欑偣鍑�
             if self.continue_btn_is_display():
-                self.click(Answer.continue_testing_btn)
+                self.click(self.es.continue_testing_btn)
 
             # 鏍囬涓嶅瓨鍦ㄧ洿鎺ヨ繑鍥濬alse
             if not self.title_is_display():
                 if self.continue_btn_is_display():
-                    self.click(Answer.continue_testing_btn)
+                    self.click(self.es.continue_testing_btn)
                     continue
                 return False
 
             try:
                 # 鑾峰彇鍒版墍鏈夐�夐」
-                options = self.get_elements(Answer.options)
+                options = self.get_eles(self.es.options)
                 number = random.randint(0, len(options)-1)
                 if options[number].is_enabled():
                     options[number].click()
@@ -39,7 +41,7 @@
 
             # 鎻愪氦鎸夐挳瀛樺湪鍒欑偣鍑�
             if self.submit_btn_is_display():
-                self.click(Answer.submit_btn)
+                self.click(self.es.submit_btn)
                 # 鏁版嵁鏄惁涓婁紶瀹屾垚
                 time.sleep(15)
                 if self.upload_is_success():
@@ -54,7 +56,7 @@
         i = 0
         while i < 60:
             try:
-                self.get_element_wait(Answer.upload_success_title)
+                self.get_ele(self.es.upload_success_title, timeout=10)
                 return True
             except TimeoutException:
                 i += 1
@@ -67,7 +69,7 @@
         :return:
         """
         try:
-            button = self.get_element(Answer.submit_btn)
+            button = self.get_ele(self.es.submit_btn)
             if button.is_enabled():
                 return True
             else:
@@ -82,7 +84,7 @@
         """
         try:
             # 鐐瑰嚮缁х画娴嬭瘯鎸夐挳
-            button = self.get_element(Answer.continue_testing_btn)
+            button = self.get_ele(self.es.continue_testing_btn)
             if button.is_enabled():
                 return True
             else:
@@ -97,7 +99,7 @@
         """
         try:
             # 鑾峰彇鏍囬
-            self.get_element_wait(Answer.title)
+            self.get_element_wait(self.es.title)
             return True
         except TimeoutException:
             return False
@@ -110,7 +112,7 @@
         i = 0
         while i < 10:
             try:
-                self.get_element(Answer.loading_text)
+                self.get_ele(self.es.loading_text)
                 i += 1
                 time.sleep(1)
             except:
@@ -123,4 +125,4 @@
         寮�濮嬫祴璇曟寜閽�
         :return:
         """
-        self.click_wait(Answer.start_btn)
+        self.click_wait(self.es.start_btn)
diff --git a/po/jaq_answer_page.py b/po/jaq_answer_page.py
index a4f99d8..930a3b9 100644
--- a/po/jaq_answer_page.py
+++ b/po/jaq_answer_page.py
@@ -23,14 +23,14 @@
 
             try:
                 # 鑾峰彇鍒版墍鏈塧閫夐」
-                options_a = self.get_elements(Answer.options_a)
+                options_a = self.get_eles(Answer.options_a)
                 if len(options_a) < 5:
                     continue
                 number_a = random.randint(0, 4)
                 options_a[number_a].click()
 
                 # 鑾峰彇鍒版墍鏈塨閫夐」
-                options_b = self.get_elements(Answer.options_b)
+                options_b = self.get_eles(Answer.options_b)
                 if len(options_b) < 4:
                     continue
                 number_b = random.randint(0, 3)
@@ -54,7 +54,7 @@
         i = 0
         while i < 60:
             try:
-                self.get_element_wait(Answer.upload_success_title)
+                self.get_ele(Answer.upload_success_title, timeout=10)
                 return True
             except TimeoutException:
                 i += 1
@@ -67,7 +67,7 @@
         :return:
         """
         try:
-            button = self.get_element(Answer.submit_btn)
+            button = self.get_ele(Answer.submit_btn)
             if button.is_enabled():
                 return True
             else:
@@ -82,7 +82,7 @@
         """
         try:
             # 鐐瑰嚮缁х画娴嬭瘯鎸夐挳
-            button = self.get_element(Answer.continue_testing_btn)
+            button = self.get_ele(Answer.continue_testing_btn)
             if button.is_enabled():
                 return True
             else:
@@ -110,7 +110,7 @@
         i = 0
         while i < 10:
             try:
-                self.get_element(Answer.loading_text)
+                self.get_ele(Answer.loading_text)
                 i += 1
                 time.sleep(1)
             except:
diff --git a/po/maq_answer_page.py b/po/maq_answer_page.py
index fbf2696..b084750 100644
--- a/po/maq_answer_page.py
+++ b/po/maq_answer_page.py
@@ -3,8 +3,8 @@
 from base.base_page import BasePage
 from elements.maq_answer_elements import MAQAnswerElements
 from selenium.common.exceptions import *
-
 import time
+import re
 
 
 class MAQAnswerPage(BasePage):
@@ -16,12 +16,98 @@
 
     se = MAQAnswerElements
 
-    def answer(self, hint=None, question: dict = None):
+    tip_timing = 35
+
+    def exercise_answer(self):
+        # 鑾峰彇鍒伴鐩�
+        time.sleep(3)
+        title = self.get_ele(self.se.q_title, 5)
+        # 鎴彇宸茬瓟鏁伴噺涓庢�绘暟閲�
+        match = re.search(r"(\d+)/(\d+)", title.text)
+        current = int(match.group(1))
+        total = int(match.group(2))
+
+        while current <= total:
+            # 鑾峰彇鍒版墍鏈夐�夐」
+            options = self.get_eles(self.se.options, 5)
+            number = random.randint(0, 5)
+            if options[number].is_enabled():
+                options[number].click()
+                current += 1
+                continue
+        time.sleep(3)
+        # 鐐瑰嚮鎻愪氦鎸夐挳
+        self.click(self.se.exercise_submit_btn, 10)
+
+    def answer(self):
+        # 鑾峰彇鍒伴鐩�
+        time.sleep(3)
+        title = self.get_ele(self.se.q_title, 5)
+        # 鎴彇宸茬瓟鏁伴噺涓庢�绘暟閲�
+        match = re.search(r"(\d+)/(\d+)", title.text)
+        current = int(match.group(1))
+        total = int(match.group(2))
+
+        while current <= total:
+            print(f"\n鐜板湪鏄{current}棰�")
+            # 瑙﹀彂浜嬩腑
+            if current == self.tip_timing:
+                time.sleep(5)
+                self.click(self.se.continue_testing_btn, 10)
+
+            # 鑾峰彇鍒版墍鏈夐�夐」
+            options = self.get_eles(self.se.options, 5)
+            number = random.randint(0, 5)
+            if options[number].is_enabled():
+                options[number].click()
+                current += 1
+                continue
+
+        time.sleep(3)
+        # 鐐瑰嚮鎻愪氦鎸夐挳
+        self.click(self.se.submit_btn, 10)
+        # while True:
+        #     # 鑾峰彇鍒版墍鏈夐�夐」
+        #     options = self.get_eles(self.se.options)
+        #     if len(options) < 6:
+        #         continue
+        #     number = random.randint(0, 5)
+        #     if options[number].is_enabled():
+        #         # 鑾峰彇鍒伴鐩�
+        #         q_title = self.get_ele(self.se.q_title).text
+        #         # q_title涓巕uestion_title涓嶇浉鍚屽垯鍐欏叆question涓�
+        #         # 閬嶅巻瀛楀吀
+        #         # if question:
+        #         #     for key in question.keys():
+        #         #         q_title = self.get_ele(self.se.q_title).text
+        #         #         if question[key]["title"] in q_title and "answer" not in question[key]:
+        #         #             question[key]["answer"] = number + 1
+        #         #             question_title = q_title
+        #         #             break
+        #         options[number].click()
+        #
+        #     # 鎻愪氦鎸夐挳瀛樺湪鍒欑偣鍑�
+        #     if self.submit_btn_is_display():
+        #         self.click(self.se.submit_btn)
+        #         # 鏁版嵁鏄惁涓婁紶瀹屾垚
+        #         time.sleep(15)
+        #         if self.upload_is_success():
+        #             if hint:
+        #                 return flag
+        #             return True
+        #         # 鏄惁缃戠粶寮傚父
+        #         try:
+        #             self.get_ele(self.se.network_exception_title)
+        #             return "缃戠粶寮傚父"
+        #         except NoSuchElementException:
+        #             pass
+        #         return False
+
+    def answer2(self, hint=None, question: dict = None):
         flag = False
         # 鏆傚仠3绉�
         time.sleep(3)
         # 鐐瑰嚮寮�濮嬬瓟棰�
-        self.click(self.se.start_btn)
         question_title = None
         while True:
             # time.sleep(0.5)
diff --git a/po/share_add_page.py b/po/share_add_page.py
index a20733a..893d697 100644
--- a/po/share_add_page.py
+++ b/po/share_add_page.py
@@ -35,8 +35,8 @@
         :return:
         """
         self.fill(self.es.fill_email, email, timeout=10)
-        self.fill(self.es.fill_position, position)
-        self.fill(self.es.fill_dept, dept)
+        # self.fill(self.es.fill_position, position)
+        # self.fill(self.es.fill_dept, dept)
         self.click(self.es.submit_btn)
 
     def fill_info_CIAQ(self, info):
diff --git a/po/test_package_list_page.py b/po/test_package_list_page.py
index d7f54cf..2b1bd57 100644
--- a/po/test_package_list_page.py
+++ b/po/test_package_list_page.py
@@ -244,7 +244,6 @@
 
         return flag
 
-
     def delete_package(self, package_name):
         """
         鍒犻櫎娴嬭瘯鍖�
diff --git a/report/report.html b/report/report.html
index ba2fafe..b20b07d 100644
--- a/report/report.html
+++ b/report/report.html
@@ -253,10 +253,10 @@
 }
 </script>
     <h1>report.html</h1>
-    <p>Report generated on 28-Jul-2023 at 16:53:13 by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a> v3.2.0</p>
+    <p>Report generated on 23-Jul-2024 at 17:12:01 by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a> v3.2.0</p>
     <h2>Summary</h2>
-    <p>19 tests ran in 567.35 seconds. </p>
-    <p class="filter" hidden="true">(Un)check the boxes to filter the results.</p><input checked="true" class="filter" data-test-result="passed" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="passed">19 passed</span>, <input checked="true" class="filter" data-test-result="skipped" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="skipped">0 skipped</span>, <input checked="true" class="filter" data-test-result="failed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="failed">0 failed</span>, <input checked="true" class="filter" data-test-result="error" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="error">0 errors</span>, <input checked="true" class="filter" data-test-result="xfailed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="xfailed">0 expected failures</span>, <input checked="true" class="filter" data-test-result="xpassed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="xpassed">0 unexpected passes</span>
+    <p>1 tests ran in 22.66 seconds. </p>
+    <p class="filter" hidden="true">(Un)check the boxes to filter the results.</p><input checked="true" class="filter" data-test-result="passed" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="passed">1 passed</span>, <input checked="true" class="filter" data-test-result="skipped" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="skipped">0 skipped</span>, <input checked="true" class="filter" data-test-result="failed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="failed">0 failed</span>, <input checked="true" class="filter" data-test-result="error" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="error">0 errors</span>, <input checked="true" class="filter" data-test-result="xfailed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="xfailed">0 expected failures</span>, <input checked="true" class="filter" data-test-result="xpassed" disabled="true" hidden="true" name="filter_checkbox" onChange="filterTable(this)" type="checkbox"/><span class="xpassed">0 unexpected passes</span>
     <h2>Results</h2>
     <table id="results-table">
       <thead id="results-table-head">
@@ -270,170 +270,8 @@
       <tbody class="passed results-table-row">
         <tr>
           <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_2package_list.py::TestPackageList::test_create_package[testPackageList]</td>
-          <td class="col-duration">9.81</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="empty log">No log output captured.</div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_2package_list.py::TestPackageList::test_edit_package[testPackageList]</td>
-          <td class="col-duration">10.59</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="empty log">No log output captured.</div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_2package_list.py::TestPackageList::test_add_member[memberDetail]</td>
-          <td class="col-duration">10.96</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="empty log">No log output captured.</div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_2package_list.py::TestPackageList::test_edit_member[memberDetail]</td>
-          <td class="col-duration">6.59</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="empty log">No log output captured.</div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_2package_list.py::TestPackageList::test_export_member[memberDetail]</td>
-          <td class="col-duration">2.31</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="empty log">No log output captured.</div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_2package_list.py::TestPackageList::test_export_url[memberDetail]</td>
-          <td class="col-duration">1.13</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="empty log">No log output captured.</div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_2package_list.py::TestPackageList::test_import[memberDetail]</td>
-          <td class="col-duration">4.23</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="empty log">No log output captured.</div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_2package_list.py::TestPackageList::test_send_email[memberDetail]</td>
-          <td class="col-duration">8.24</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="empty log">No log output captured.</div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_2package_list.py::TestPackageList::test_send_sms[memberDetail]</td>
-          <td class="col-duration">9.00</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="empty log">No log output captured.</div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_2package_list.py::TestPackageList::test_skip_report[memberDetail]</td>
-          <td class="col-duration">5.16</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="empty log">No log output captured.</div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_2package_list.py::TestPackageList::test_remove_member[memberDetail]</td>
-          <td class="col-duration">1.87</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="empty log">No log output captured.</div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_2package_list.py::TestPackageList::test_edit_prompt[testPackageList]</td>
-          <td class="col-duration">368.04</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="empty log">No log output captured.</div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_2package_list.py::TestPackageList::test_verify_member_status[testPackageList]</td>
-          <td class="col-duration">5.39</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="empty log">No log output captured.</div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_2package_list.py::TestPackageList::test_generate_export_report[testPackageList]</td>
-          <td class="col-duration">26.83</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="empty log">No log output captured.</div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_2package_list.py::TestPackageList::test_download_report[testPackageList]</td>
-          <td class="col-duration">2.08</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="empty log">No log output captured.</div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_2package_list.py::TestPackageList::test_export_report[testPackageList]</td>
-          <td class="col-duration">20.38</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="empty log">No log output captured.</div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_2package_list.py::TestPackageList::test_export_data[testPackageList]</td>
-          <td class="col-duration">2.18</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="empty log">No log output captured.</div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_2package_list.py::TestPackageList::test_hr_resend[testPackageList]</td>
-          <td class="col-duration">30.40</td>
-          <td class="col-links"></td></tr>
-        <tr>
-          <td class="extra" colspan="4">
-            <div class="empty log">No log output captured.</div></td></tr></tbody>
-      <tbody class="passed results-table-row">
-        <tr>
-          <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_2package_list.py::TestPackageList::test_member_resend[testPackageList]</td>
-          <td class="col-duration">37.73</td>
+          <td class="col-name">testcase/test_main.py::TestMAQ::test_maq[MAQ]</td>
+          <td class="col-duration">22.63</td>
           <td class="col-links"></td></tr>
         <tr>
           <td class="extra" colspan="4">
diff --git a/testcase/conftest.py b/testcase/conftest.py
index d82f962..8ba0f3b 100644
--- a/testcase/conftest.py
+++ b/testcase/conftest.py
@@ -14,7 +14,12 @@
 @pytest.fixture(scope="session")
 def driver(request):
     options = Options()
-    options.debugger_address = "127.0.0.1:9222"
+    # options.debugger_address = "127.0.0.1:9222"
+    options.add_argument('--headless')
+    options.add_argument('--no-sandbox')
+    options.add_argument('--disable-gpu')
+    options.add_argument('--disable-dev-shm-usage')
+    # options.add_argument('window-size=1200x600')
     # 鍒濆鍖杦ebdriver
     driver = webdriver.Chrome(options=options)
     request.addfinalizer(driver.quit)
@@ -30,11 +35,14 @@
     """
     # 鑾峰彇褰撳墠椤圭洰鏍硅矾寰�
     root_path = os.getcwd()
-    if "\\testcase" in root_path:
-        root_path = root_path[0:root_path.rfind("\\testcase")]
+    print(root_path)
+    if "testcase" in root_path:
+        root_path = root_path.replace('testcase', '')
     # 鑾峰彇鍒拌鑾峰彇鏁版嵁鐨勯敭
     key = request.param
+    file_path = os.path.join(root_path, "data", "test_data.json")
+    print("file_path:", file_path)
     # 璇诲彇鏁版嵁
-    with open(root_path + r"\data\test_data.json", "r", encoding="utf-8") as f:
+    with open(file_path, "r", encoding="utf-8") as f:
         values = json.load(f)
         return values[key]
diff --git a/testcase/test_login.py b/testcase/test_1login.py
similarity index 100%
rename from testcase/test_login.py
rename to testcase/test_1login.py
diff --git a/testcase/test_ciaq.py b/testcase/test_ciaq.py
index 25566a6..fa2ae97 100644
--- a/testcase/test_ciaq.py
+++ b/testcase/test_ciaq.py
@@ -16,47 +16,6 @@
     driver = None
     test_package_name = "CIAQ鑷姩娴嬭瘯鍖�-20230718171809"
 
-    @pytest.mark.parametrize('data_read', ["login"], indirect=True)
-    def test_login(self, data_read: dict):
-        """
-        鎵撳紑椤甸潰骞惰繘琛岀櫥褰曟祴璇�
-        :param data_read: 鎵ц鏁版嵁璇诲彇鐨勫嚱鏁板苟鑾峰彇鍒拌繑鍥炲��
-        :return:
-        """
-        TestCIAQ.driver = webdriver.Chrome()
-        driver = TestCIAQ.driver
-        login_page = LoginPage(driver)
-        try:
-            # 鎵撳紑閾炬帴
-            driver.get(data_read["url"])
-        except:
-            # 閾炬帴鎵撳紑鍑虹幇寮傚父璇存槑閾炬帴鏃犳硶璁块棶,鎹曡幏寮傚父浣嗕笉鍋氬鐞�
-            pass
-
-        # 娴忚鍣ㄧ獥鍙f渶澶у寲
-        driver.maximize_window()
-        # 鑾峰彇鍒板埛鏂版寜閽苟姣�10绉掔偣鍑讳竴娆�,鐭ラ亾鍒锋柊鎸夐挳娑堝け
-        while True:
-            try:
-                # 鍒ゆ柇鎵撳紑鐨勯〉闈㈡槸鍚﹀瓨鍦ㄥ埛鏂版寜閽�
-                reload_btn = login_page.get_element((By.XPATH, "//div[@id='buttons']/div/button[@id='reload-button']"))
-                # 鐐瑰嚮鍒锋柊鎸夐挳
-                reload_btn.click()
-                time.sleep(10)
-            except:
-                # 鍑虹幇寮傚父琛ㄧず涓嶅瓨鍦ㄥ埛鏂版寜閽�
-                # 鎺ョ潃鍒ゆ柇鏄惁瀛樺湪nginx error!
-                try:
-                    nginx_error = login_page.get_element((By.XPATH, "//strong[text() = 'nginx error!']"))
-                    # 瀛樺湪鍒欑潯鐪�10绉�
-                    time.sleep(10)
-                except:
-                    break
-
-        login_page.login(data_read["username"], data_read["password"], data_read["code"])
-        time.sleep(2)
-        assert login_page.is_login_success()
-
     @pytest.mark.parametrize('data_read', ["CIAQ"], indirect=True)
     def test_create_package(self, data_read: dict):
         """
@@ -73,46 +32,48 @@
         # 鍒涘缓娴嬭瘯鍖呭垪琛ㄩ〉闈㈢殑瀵硅薄
         test_package_list = TestPackageListPage(driver)
         # 鐐瑰嚮鍒涘缓鎸夐挳
-        test_package_list.create_btn()
+        test_package_list.click(test_package_list.es.create_btn)
         # 鑾峰彇褰撳墠鏃堕棿
         current_time = datetime.now()
         # 杞崲涓哄瓧绗︿覆
         time_str = current_time.strftime("%Y%m%d%H%M%S")
         # 鍒涘缓娴嬭瘯鍖呭~鍐欑殑鍙傛暟
+
         # 娴嬭瘯鍖呭悕绉�
         test_package_name = "CIAQ鑷姩娴嬭瘯鍖�-" + time_str
         # 璁剧疆娴嬭瘯鍖呭悕绉颁负绫诲彉閲�
         TestCIAQ.test_package_name = test_package_name
         # 鑾峰彇鍒涘缓娴嬭瘯鍖呯殑鏁版嵁
         create_data = data_read["add"]
+
         # 濉啓娴嬭瘯鍖呭悕绉�
-        test_package_list.testPackageName_input(test_package_name)
+        test_package_list.fill(test_package_list.es.add_testPackageName_input, test_package_name)
         # 濉啓鎶ュ憡浼佷笟鍚嶇О
-        test_package_list.reportCompanyName_input(create_data["company"])
+        test_package_list.fill(test_package_list.es.add_reportCompanyName_input, create_data["company"])
         # 閫夋嫨娴嬭瘯鍖呯被鍨�
-        test_package_list.testPackageType_select(create_data["type"])
+        test_package_list.select(test_package_list.es.add_testPackageType_select, test_package_list.es.add_testPackageType_option, create_data["type"])
         # 閫夋嫨浜у搧鍖�
         test_package_list.prodTree_select(create_data["product"])
         # 杈撳叆hr閭
-        test_package_list.hrReportEmail_input(create_data["hrEmail"])
+        test_package_list.fill(test_package_list.es.add_hrEmail_input, create_data["hrEmail"])
         # 杈撳叆鏈夋晥鏈�
-        test_package_list.invalidTime_input(create_data["invalid"])
+        test_package_list.fill(test_package_list.es.add_invalidTime, create_data["invalid"])
         # 閫夋嫨閭�璇烽偖浠惰瑷�绫诲瀷
-        test_package_list.testTemplateLangType_select(create_data["memberLang"])
+        test_package_list.select(test_package_list.es.add_templateLangType_select, test_package_list.es.add_templateLangType_option, create_data["memberLang"])
         # 閫夋嫨HR閭欢璇█绫诲瀷
-        test_package_list.hrTemplateLangType_select(create_data["hrReportLang"])
+        test_package_list.select(test_package_list.es.add_hrTemplateLangType_select, test_package_list.es.add_hrTemplateLangType_option, create_data["hrReportLang"])
         # 閫夋嫨鎶ュ憡妯℃澘
-        test_package_list.reportTemplate_select(create_data["reportTemplate"])
+        test_package_list.select(test_package_list.es.add_reportTemplateId_select, test_package_list.es.add_reportTemplateId_option, create_data["reportTemplate"])
         # 鐐瑰嚮娴嬭瘯鑰呮帴鏀舵姤鍛�
-        test_package_list.autoSendReport_checkbox()
+        test_package_list.click(test_package_list.es.add_autoSendReport_checkbox)
         # 閫夋嫨娴嬭瘯鑰呮姤鍛婇偖绠辫瑷�绫诲瀷
-        test_package_list.memberReportLangType_select(create_data["memberReportLang"])
+        test_package_list.select(test_package_list.es.add_memberReportLangType_select, test_package_list.es.add_memberReportLangType_option, create_data["memberReportLang"])
 
         # 閫夋嫨浜哄彛瀛︾紪鐮�
         test_package_list.select_code_checkbox(create_data["checkCode"], create_data["uncheckCode"])
 
         # 鐐瑰嚮纭鎸夐挳
-        test_package_list.add_confirm()
+        test_package_list.click(test_package_list.es.add_confirm_btn)
         time.sleep(2)
         # 鍒ゆ柇鏄惁鎴愬姛鍒涘缓
         assert test_package_list.is_create_success(test_package_name)
@@ -128,24 +89,21 @@
         driver = TestCIAQ.driver
         # 鍒涘缓娴嬭瘯鍖呭垪琛ㄩ〉闈㈢殑瀵硅薄
         test_package_list = TestPackageListPage(driver)
-        # 鍕鹃�夋柊鍒涘缓鐨勬祴璇曞寘
-        test_package_list.click_package_checkbox(TestCIAQ.test_package_name)
-        # 鐐瑰嚮鐢熸垚鍒嗕韩閾炬帴鎸夐挳
-        test_package_list.click_share_1_btn()
         # 鑾峰彇鍒皍rl
-        url = test_package_list.get_share_url()
+        url = test_package_list.get_share_url(TestCIAQ.test_package_name)
         # 鎵撳紑鏂版爣绛鹃〉鍔犺浇url
-        test_package_list.open_new_table_to_url(url)
+        test_package_list.goto_new_table(url)
         # 鍒涘缓鍒嗕韩椤甸潰瀵硅薄
         share_add = ShareAddPage(driver)
         # 濉啓淇℃伅鎻愪氦骞惰幏鍙栨祴璇曢摼鎺�
         name = random_string(8)
         email = name + "@gmail.com"
-        test_url = share_add.page_default_operation(name, email)
+        # 濉啓淇℃伅
+        test_url = share_add.get_test_url(name, email)
         # 褰撳墠椤甸潰鎵撳紑閾炬帴
         driver.get(test_url)
         # 鐐瑰嚮鎻愪氦鎸夐挳
-        share_add.submit_btn()
+        share_add.click(share_add.es.submit_btn)
         # 鑾峰彇鏁版嵁
         info = data_read["info"]
         # 濉啓鍩烘湰淇℃伅骞舵彁浜�
@@ -175,7 +133,7 @@
         # 鍒涘缓娴嬭瘯鍖呭垪琛ㄩ〉闈㈢殑瀵硅薄
         test_package_list = TestPackageListPage(driver)
         # 鍒犻櫎娴嬭瘯鍖�
-        test_package_list.delete_package()
+        test_package_list.delete_package(TestCIAQ.test_package_name)
         time.sleep(5)
         # 鍏抽棴
         driver.quit()
diff --git a/testcase/test_jaq.py b/testcase/test_jaq.py
index 468f9b9..15b59e6 100644
--- a/testcase/test_jaq.py
+++ b/testcase/test_jaq.py
@@ -17,46 +17,6 @@
     driver = None
     test_package_name = None
 
-    @pytest.mark.parametrize('data_read', ["login"], indirect=True)
-    def test_login(self, data_read: dict):
-        """
-        鎵撳紑椤甸潰骞惰繘琛岀櫥褰曟祴璇�
-        :return:
-        """
-        TestJAQ.driver = webdriver.Chrome()
-        driver = TestJAQ.driver
-        login_page = LoginPage(driver)
-        try:
-            # 鎵撳紑閾炬帴
-            driver.get(data_read["url"])
-        except:
-            # 閾炬帴鎵撳紑鍑虹幇寮傚父璇存槑閾炬帴鏃犳硶璁块棶,鎹曡幏寮傚父浣嗕笉鍋氬鐞�
-            pass
-
-        # 娴忚鍣ㄧ獥鍙f渶澶у寲
-        driver.maximize_window()
-        # 鑾峰彇鍒板埛鏂版寜閽苟姣�10绉掔偣鍑讳竴娆�,鐭ラ亾鍒锋柊鎸夐挳娑堝け
-        while True:
-            try:
-                # 鍒ゆ柇鎵撳紑鐨勯〉闈㈡槸鍚﹀瓨鍦ㄥ埛鏂版寜閽�
-                reload_btn = login_page.get_element((By.XPATH, "//div[@id='buttons']/div/button[@id='reload-button']"))
-                # 鐐瑰嚮鍒锋柊鎸夐挳
-                reload_btn.click()
-                time.sleep(10)
-            except:
-                # 鍑虹幇寮傚父琛ㄧず涓嶅瓨鍦ㄥ埛鏂版寜閽�
-                # 鎺ョ潃鍒ゆ柇鏄惁瀛樺湪nginx error!
-                try:
-                    nginx_error = login_page.get_element((By.XPATH, "//strong[text() = 'nginx error!']"))
-                    # 瀛樺湪鍒欑潯鐪�10绉�
-                    time.sleep(10)
-                except:
-                    break
-
-        login_page.login(data_read["username"], data_read["password"], data_read["code"])
-        time.sleep(2)
-        assert login_page.is_login_success()
-
     @pytest.mark.parametrize('data_read', ["JAQ"], indirect=True)
     def test_create_package(self, data_read: dict):
         """
@@ -87,34 +47,39 @@
         create_data = data_read["add"]
 
         # 濉啓娴嬭瘯鍖呭悕绉�
-        test_package_list.testPackageName_input(test_package_name)
-        test_package_list.reportCompanyName_input(create_data["company"])
+        test_package_list.fill(test_package_list.es.add_testPackageName_input, test_package_name)
+        # 濉啓鎶ュ憡浼佷笟鍚嶇О
+        test_package_list.fill(test_package_list.es.add_reportCompanyName_input, create_data["company"])
         # 閫夋嫨娴嬭瘯鍖呯被鍨�
-        test_package_list.testPackageType_select(create_data["type"])
+        test_package_list.select(test_package_list.es.add_testPackageType_select,
+                                 test_package_list.es.add_testPackageType_option, create_data["type"])
         # 閫夋嫨浜у搧鍖�
         test_package_list.prodTree_select(create_data["product"])
         # 杈撳叆hr閭
-        test_package_list.hrReportEmail_input(create_data["hrEmail"])
+        test_package_list.fill(test_package_list.es.add_hrEmail_input, create_data["hrEmail"])
         # 杈撳叆鏈夋晥鏈�
-        test_package_list.invalidTime_input(create_data["invalid"])
+        test_package_list.fill(test_package_list.es.add_invalidTime, create_data["invalid"])
         # 閫夋嫨閭�璇烽偖浠惰瑷�绫诲瀷
-        test_package_list.testTemplateLangType_select(create_data["memberLang"])
+        test_package_list.select(test_package_list.es.add_templateLangType_select,
+                                 test_package_list.es.add_templateLangType_option, create_data["memberLang"])
         # 閫夋嫨HR閭欢璇█绫诲瀷
-        test_package_list.hrTemplateLangType_select(create_data["hrReportLang"])
+        test_package_list.select(test_package_list.es.add_hrTemplateLangType_select,
+                                 test_package_list.es.add_hrTemplateLangType_option, create_data["hrReportLang"])
         # 閫夋嫨鎶ュ憡妯℃澘
-        test_package_list.reportTemplate_select(create_data["reportTemplate"])
+        test_package_list.select(test_package_list.es.add_reportTemplateId_select,
+                                 test_package_list.es.add_reportTemplateId_option, create_data["reportTemplate"])
         # 杈撳叆瑕佽瘎浠风殑宀椾綅
-        test_package_list.position_input(create_data["position"])
+        test_package_list.fill(test_package_list.es.add_position_input, create_data["position"])
         # 杈撳叆鑱屼笟澶х被
-        test_package_list.professionalCategory_input(create_data["professionalCategory"])
+        test_package_list.fill(test_package_list.es.add_professionalCategory_input, create_data["professionalCategory"])
         # 杈撳叆涓婄骇宀椾綅
-        test_package_list.superiorPosition_input(create_data["superiorPosition"])
+        test_package_list.fill(test_package_list.es.add_superiorPosition_input, create_data["superiorPosition"])
         # 鐐瑰嚮娴嬭瘯鑰呮帴鏀舵姤鍛�
-        test_package_list.autoSendReport_checkbox()
+        test_package_list.click(test_package_list.es.add_autoSendReport_checkbox)
         # 閫夋嫨娴嬭瘯鑰呮姤鍛婇偖绠辫瑷�绫诲瀷
-        test_package_list.memberReportLangType_select(create_data["memberReportLang"])
+        test_package_list.select(test_package_list.es.add_memberReportLangType_select, test_package_list.es.add_memberReportLangType_option, create_data["memberReportLang"])
         # 鐐瑰嚮纭鎸夐挳
-        test_package_list.add_confirm()
+        test_package_list.click(test_package_list.es.add_confirm_btn)
         time.sleep(2)
         # 鍒ゆ柇鏄惁鎴愬姛鍒涘缓
         assert test_package_list.is_create_success(test_package_name)
@@ -130,24 +95,20 @@
         driver = TestJAQ.driver
         # 鍒涘缓娴嬭瘯鍖呭垪琛ㄩ〉闈㈢殑瀵硅薄
         test_package_list = TestPackageListPage(driver)
-        # 鍕鹃�夋柊鍒涘缓鐨勬祴璇曞寘
-        test_package_list.click_package_checkbox(TestJAQ.test_package_name)
-        # 鐐瑰嚮鐢熸垚鍒嗕韩閾炬帴鎸夐挳
-        test_package_list.click_share_1_btn()
         # 鑾峰彇鍒皍rl
-        url = test_package_list.get_share_url()
+        url = test_package_list.get_share_url(TestJAQ.test_package_name)
         # 鎵撳紑鏂版爣绛鹃〉鍔犺浇url
-        test_package_list.open_new_table_to_url(url)
+        test_package_list.goto_new_table(url)
         # 鍒涘缓鍒嗕韩椤甸潰瀵硅薄
         share_add = ShareAddPage(driver)
         # 濉啓淇℃伅鎻愪氦骞惰幏鍙栨祴璇曢摼鎺�
         name = random_string(8)
         email = name + "@gmail.com"
-        test_url = share_add.page_default_operation(name, email)
+        test_url = share_add.get_test_url(name, email)
         # 褰撳墠椤甸潰鎵撳紑閾炬帴
         driver.get(test_url)
         # 鐐瑰嚮鎻愪氦鎸夐挳
-        share_add.submit_btn()
+        share_add.click(share_add.es.submit_btn)
         # 鑾峰彇鏁版嵁
         info = data_read["info"]
         # 濉啓鍩烘湰淇℃伅骞舵彁浜�
@@ -177,7 +138,7 @@
         # 鍒涘缓娴嬭瘯鍖呭垪琛ㄩ〉闈㈢殑瀵硅薄
         test_package_list = TestPackageListPage(driver)
         # 鍒犻櫎娴嬭瘯鍖�
-        test_package_list.delete_package()
+        test_package_list.delete_package(TestJAQ.test_package_name)
         time.sleep(5)
         # 鍏抽棴
         driver.quit()
diff --git a/testcase/test_main.py b/testcase/test_main.py
new file mode 100644
index 0000000..78d003c
--- /dev/null
+++ b/testcase/test_main.py
@@ -0,0 +1,101 @@
+import time
+
+import pytest
+from po.share_add_page import ShareAddPage
+from po.maq_answer_page import MAQAnswerPage
+from comm.my_random import *
+
+
+class TestMAQ:
+    driver = None
+    test_package_name = "MAQ鑷姩娴嬭瘯鍖�-20230720170011"
+
+    @pytest.mark.parametrize('data_read', ["MAQ"], indirect=True)
+    def test_maq(self, data_read: dict, driver):
+        """
+        鎵撳紑鍒嗕韩閾炬帴
+        :return:
+        """
+        print(f"\n寮�濮嬭繘琛孧AQ娴嬭瘯......")
+        # 鑾峰彇driver
+        TestMAQ.driver = driver
+        driver.get(data_read['share_url'])
+        # # 鍒涘缓娴嬭瘯鍖呭垪琛ㄩ〉闈㈢殑瀵硅薄
+        # test_package_list = TestPackageListPage(driver)
+        # url = test_package_list.oper_elem("share_url_text")
+        # # 鍒囨崲鍒颁笂涓�灞俰frame
+        # test_package_list.switch_parent_iframe()
+        # # 鐐瑰嚮鍏抽棴鎸夐挳
+        # test_package_list.oper_elem("share_cancel_btn")
+        # time.sleep(1)
+        # # 鎵撳紑鏂版爣绛鹃〉鍔犺浇url
+        # test_package_list.open_new_table_to_url(url)
+        # # 鍒涘缓鍒嗕韩椤甸潰瀵硅薄
+        share_add = ShareAddPage(driver)
+        # 濉啓淇℃伅鎻愪氦骞惰幏鍙栨祴璇曢摼鎺�
+        name = random_string(8)
+        email = name + "@gmail.com"
+        test_url = share_add.get_test_url(name, email)
+        # 鎵撳紑閾炬帴
+        driver.get(test_url)
+        # 鐐瑰嚮鎻愪氦鎸夐挳
+        share_add.click(share_add.es.submit_btn, 10)
+        # 鑾峰彇鏁版嵁
+        info = data_read["info"]
+        # # 濉啓鍩烘湰淇℃伅骞舵彁浜�
+        share_add.fill_info(email, info["position"], info["dept"])
+        # share_add.oper_elem("fill_email_input", email)
+        # share_add.oper_elem("fill_position_input", info["position"])
+        # share_add.oper_elem("fill_dept_input", info["dept"])
+        # share_add.oper_elem("submit_btn")
+
+        time.sleep(5)
+
+        # 鍒涘缓answer瀵硅薄
+        answer_page = MAQAnswerPage(driver)
+        # 鐐瑰嚮寮�濮嬫祴璇�
+        answer_page.click(answer_page.se.start_btn, 10)
+
+        # 璺宠繃缁冧範鐜妭
+        answer_page.exercise_answer()
+
+        print("\n寮�濮嬬瓟棰�")
+        # 寮�濮嬬瓟棰�
+        answer_page.answer()
+
+        # 鏈�鍚庢娴嬪叧闂寜閽槸鍚﹀瓨鍦�
+        answer_page.get_ele(answer_page.se.close_btn, 30)
+
+    # def test_answer(self):
+    #     # 鑾峰彇driver
+    #     driver = TestMAQ.driver
+    #     # 鍒涘缓answer瀵硅薄
+    #     answer_page = MAQAnswerPage(driver)
+    #     # 鐐瑰嚮寮�濮嬫祴璇�
+    #     answer_page.oper_elem("start_btn")
+    #     # 寮�濮嬬瓟棰�
+    #     flag = answer_page.answer()
+    #     # 绛斿畬棰樺叧闂綋鍓嶆爣绛鹃〉
+    #     driver.close()
+    #     if flag is not None or not flag:
+    #         assert flag
+    #         return
+    #
+    # def test_delete_package(self):
+    #     # 鑾峰彇driver
+    #     driver = TestMAQ.driver
+    #     # 鍒涘缓娴嬭瘯鍖呭垪琛ㄩ〉闈㈢殑瀵硅薄
+    #     test_package_list = TestPackageListPage(driver)
+    #     # 鍒囨崲鍒扮涓�涓爣绛鹃〉
+    #     test_package_list.switch_window(0)
+    #     test_package_list.oper_elem("this_iframe")
+    #     # 鍒犻櫎娴嬭瘯鍖�
+    #     test_package_list.oper_elem("delete_btn")
+    #     test_package_list.oper_elem("delete_confirm_btn")
+    #     time.sleep(3)
+    #     # 鍏抽棴
+    #     driver.quit()
+
+
+if __name__ == '__main__':
+    pytest.main(["-s", __file__])

--
Gitblit v1.9.1