From 61a7fc87f75f7ef34fd0e3990f3d01e6a68b9c46 Mon Sep 17 00:00:00 2001
From: 阳洁 <2077506045@qq.com>
Date: 星期二, 18 七月 2023 17:34:21 +0800
Subject: [PATCH] 测评系统自动测试

---
 elements/test_package_list_elements.py |    2 
 elements/ciaq_answer_elements.py       |   23 ++
 po/share_add_page.py                   |   42 ++++
 elements/share_add_elements.py         |   35 +++
 po/test_package_list_page.py           |   26 ++
 testcase/test_ciaq.py                  |  185 ++++++++++++++++++++
 data/test_data.json                    |   32 +++
 po/ciaq_answer_page.py                 |  126 ++++++++++++++
 report/report.html                     |   24 +-
 9 files changed, 483 insertions(+), 12 deletions(-)

diff --git a/data/test_data.json b/data/test_data.json
index 7318755..54c4411 100644
--- a/data/test_data.json
+++ b/data/test_data.json
@@ -81,5 +81,37 @@
       "position":"鑱屽憳",
       "dept": "浜轰簨閮�"
     }
+  },
+  "CIAQ": {
+    "menu": "娴嬭瘯鍖呯鐞�/娴嬭瘯鍖呭垪琛�",
+    "add": {
+      "company": "TAI娴嬭瘯",
+      "type": "鑱屼笟鍏磋叮鍖�",
+      "product": "CIAQ",
+      "hrEmail": "2077506045@qq.com",
+      "invalid": "2024-01-01 00:00:00",
+      "memberLang": "涓枃",
+      "hrReportLang": "涓枃",
+      "reportTemplate": "CIAQ-Complete-Chinese",
+      "memberReportLang": "涓枃",
+      "checkCode": "Dem0015,Dem0014,Dem0013,Dem0012,Dem0011,Dem0010,Dem0009,Dem0008,Dem0007,Dem0006,Dem0005,sex,age",
+      "uncheckCode": "dept,position"
+    },
+    "info": {
+      "email":"3891@8rvf41t.site",
+      "sex": "鐢�",
+      "age": "24",
+      "grade": "澶у洓",
+      "address": "婀栧崡鐪佸渤闃冲競",
+      "university": "婀栧崡鐞嗗伐澶у",
+      "universityAddress": "婀栧崡鐪佸渤闃冲競",
+      "college": "婀栧崡鐞嗗伐瀛﹂櫌鏂伴椈浼犳挱瀛﹂櫌",
+      "major": "骞垮憡瀛�",
+      "subject": "鏂囧",
+      "GPA": "3.3/4.0",
+      "work": "骞垮憡璁捐",
+      "status": "鏈湪瀵绘壘瀹炰範/宸ヤ綔",
+      "workExperience": "鏃�"
+    }
   }
 }
\ No newline at end of file
diff --git a/elements/ciaq_answer_elements.py b/elements/ciaq_answer_elements.py
new file mode 100644
index 0000000..9b401ce
--- /dev/null
+++ b/elements/ciaq_answer_elements.py
@@ -0,0 +1,23 @@
+from selenium.webdriver.common.by import By
+
+
+class CIAQAnswerElements:
+    # 寮�濮嬫祴璇曟寜閽�
+    start_btn = (By.XPATH, "//button/span[text()='寮�濮嬫祴璇�']/..")
+    # 棰樼洰閫夐」
+    options = (By.XPATH, "//span[@class='q-item-span-content']")
+    # 绂佺敤鐨勯�夐」
+    disabled = (By.XPATH, "//label[@aria-disabled='true']")
+    # 缁х画娴嬭瘯鎸夐挳
+    continue_testing_btn = (By.XPATH, "//button/span[text()='缁х画娴嬭瘯']/..")
+    # 鎻愪氦鎸夐挳
+    submit_btn = (By.XPATH, "//button/span[contains(text(),'鎻愪氦')]/..")
+    # 涓婁紶鎴愬姛鏍囬
+    upload_success_title = (By.XPATH, "//main/h2[contains(text(), '鏁版嵁宸茬粡鎴愬姛鍦颁笂浼犺嚦鏈嶅姟鍣�')]")
+
+    # 鍔犺浇妗嗘枃瀛�
+    loading_text = (By.XPATH, "//div[@class='el-loading-spinner']/p")
+
+    # 鏍囬鏂囧瓧
+    title = (By.XPATH, "//div[@class='align-center']/span[2]")
+
diff --git a/elements/share_add_elements.py b/elements/share_add_elements.py
index 8144912..4dd516f 100644
--- a/elements/share_add_elements.py
+++ b/elements/share_add_elements.py
@@ -20,3 +20,38 @@
     fill_position = (By.XPATH, "//form/div[3]//input")
     # 鍩烘湰淇℃伅-閮ㄩ棬
     fill_dept = (By.XPATH, "//form/div[4]//input")
+
+
+    # CIAQ浜у搧鍖呭熀鏈俊鎭�
+    ciaq_email_input = (By.XPATH, "//form/div[2]//input")
+
+    ciaq_sex_select = (By.XPATH, "//form/div[3]//input")
+    ciaq_sex_option = (By.XPATH, "//form/div[3]//ul/li[contains(@class,'el-select-dropdown__item')]/span")
+
+    ciaq_age_input = (By.XPATH, "//form/div[4]//input")
+
+    ciaq_grade_select = (By.XPATH, "//form/div[5]//input")
+    ciaq_grade_option = (By.XPATH, "//form/div[5]//ul/li[contains(@class,'el-select-dropdown__item')]/span")
+
+    ciaq_address_input = (By.XPATH, "//form/div[6]//input")
+
+    ciaq_university_input = (By.XPATH, "//form/div[7]//input")
+
+    ciaq_universityAddress_input = (By.XPATH, "//form/div[8]//input")
+
+    ciaq_college_input = (By.XPATH, "//form/div[9]//input")
+
+    ciaq_major_input = (By.XPATH, "//form/div[10]//input")
+
+    ciaq_subject_select = (By.XPATH, "//form/div[11]//input")
+    ciaq_subject_option = (By.XPATH, "//form/div[11]//ul/li[contains(@class,'el-select-dropdown__item')]/span")
+
+    ciaq_GPA_input = (By.XPATH, "//form/div[12]//input")
+
+    ciaq_work_input = (By.XPATH, "//form/div[13]//input")
+
+    ciaq_status_select = (By.XPATH, "//form/div[14]//input")
+    ciaq_status_option = (By.XPATH, "//form/div[14]//ul/li[contains(@class,'el-select-dropdown__item')]/span")
+
+    ciaq_workExperience_select = (By.XPATH, "//form/div[15]//input")
+    ciaq_workExperience_option = (By.XPATH, "//form/div[15]//ul/li[contains(@class,'el-select-dropdown__item')]/span")
diff --git a/elements/test_package_list_elements.py b/elements/test_package_list_elements.py
index 09fd4ea..a8a6406 100644
--- a/elements/test_package_list_elements.py
+++ b/elements/test_package_list_elements.py
@@ -67,6 +67,8 @@
     add_memberTemplateLangType_select = (By.XPATH, "//select[@name='memberTemplateLangType']/../button")
     # add-娴嬭瘯鑰呮姤鍛婅瑷�绫诲瀷閫夐」
     add_memberTemplateLangType_option = (By.XPATH, "//select[@name='memberTemplateLangType']/../div/div/ul/li/a/span[2]")
+    # 浜哄彛瀛︾紪鐮侀�夐」
+    add_code_checkbox = (By.XPATH, "//label[@class='check-box']")
     # add-纭鎸夐挳
     add_confirm_btn = (By.XPATH, "//iframe[@src='/exam/test_package/add']/../../div[3]/a[1]")
 
diff --git a/po/ciaq_answer_page.py b/po/ciaq_answer_page.py
new file mode 100644
index 0000000..6a55341
--- /dev/null
+++ b/po/ciaq_answer_page.py
@@ -0,0 +1,126 @@
+import random
+
+from base.base_page import BasePage
+from elements.ciaq_answer_elements import CIAQAnswerElements as Answer
+from selenium.common.exceptions import *
+
+import time
+
+
+class CIAQAnswerPage(BasePage):
+    """
+    绛旈椤甸潰
+    """
+    loading_count = 0
+
+    def answer(self):
+        # 鏆傚仠3绉�
+        time.sleep(3)
+        while True:
+            # 缁х画娴嬭瘯鎸夐挳鍑虹幇鍒欑偣鍑�
+            if self.continue_btn_is_display():
+                self.click(Answer.continue_testing_btn)
+
+            # 鏍囬涓嶅瓨鍦ㄧ洿鎺ヨ繑鍥濬alse
+            if not self.title_is_display():
+                if self.continue_btn_is_display():
+                    self.click(Answer.continue_testing_btn)
+                    continue
+                return False
+
+            try:
+                # 鑾峰彇鍒版墍鏈夐�夐」
+                options = self.get_elements(Answer.options)
+                number = random.randint(0, len(options)-1)
+                if options[number].is_enabled():
+                    options[number].click()
+            except:
+                pass
+
+            # 鎻愪氦鎸夐挳瀛樺湪鍒欑偣鍑�
+            if self.submit_btn_is_display():
+                self.click(Answer.submit_btn)
+                # 鏁版嵁鏄惁涓婁紶瀹屾垚
+                time.sleep(15)
+                if self.upload_is_success():
+                    return True
+                return False
+
+    def upload_is_success(self):
+        """
+        鍒ゆ柇鏁版嵁鏄惁涓婁紶瀹屾垚
+        :return:
+        """
+        i = 0
+        while i < 60:
+            try:
+                self.get_element_wait(Answer.upload_success_title)
+                return True
+            except TimeoutException:
+                i += 1
+                time.sleep(1)
+        return False
+
+    def submit_btn_is_display(self):
+        """
+        鍒ゆ柇鎻愪氦鎸夐挳鏄惁瀛樺湪
+        :return:
+        """
+        try:
+            button = self.get_element(Answer.submit_btn)
+            if button.is_enabled():
+                return True
+            else:
+                return False
+        except NoSuchElementException:
+            return False
+
+    def continue_btn_is_display(self):
+        """
+        鍒ゆ柇缁х画娴嬭瘯鎸夐挳鏄惁鍑虹幇
+        :return: bool
+        """
+        try:
+            # 鐐瑰嚮缁х画娴嬭瘯鎸夐挳
+            button = self.get_element(Answer.continue_testing_btn)
+            if button.is_enabled():
+                return True
+            else:
+                return False
+        except NoSuchElementException:
+            return False
+
+    def title_is_display(self):
+        """
+        鍒ゆ柇鏍囬鏄惁鍑虹幇
+        :return: bool
+        """
+        try:
+            # 鑾峰彇鏍囬
+            self.get_element_wait(Answer.title)
+            return True
+        except TimeoutException:
+            return False
+
+    def loadin_text(self):
+        """
+        鍒ゆ柇鍔犺浇妗嗗姞杞斤紝濡傛灉鍔犺浇瓒呰繃10绉掔洿鎺ラ��鍑哄綋鍓嶆祴璇�
+        :return:
+        """
+        i = 0
+        while i < 10:
+            try:
+                self.get_element(Answer.loading_text)
+                i += 1
+                time.sleep(1)
+            except:
+                return False
+        else:
+            return True
+
+    def start_btn(self):
+        """
+        寮�濮嬫祴璇曟寜閽�
+        :return:
+        """
+        self.click_wait(Answer.start_btn)
diff --git a/po/share_add_page.py b/po/share_add_page.py
index 7642306..e3de559 100644
--- a/po/share_add_page.py
+++ b/po/share_add_page.py
@@ -7,6 +7,7 @@
     """
     鍒嗕韩閾炬帴鎵撳紑鐨勯〉闈�
     """
+
     def name_input(self, name):
         """
         杈撳叆濮撳悕
@@ -60,3 +61,44 @@
         self.click(Share.submit_btn)
         time.sleep(2)
 
+    def fill_info_CIAQ(self, info):
+        """
+        CIAQ浜у搧鍖呭~鍐欏熀鏈俊鎭�
+        :param info:
+        :return:
+        """
+        self.send_text_wait(info["email"], Share.ciaq_email_input)
+        self.selector(Share.ciaq_sex_select, Share.ciaq_sex_option, info["sex"])
+        self.send_text_wait(info["age"], Share.ciaq_age_input)
+        self.selector(Share.ciaq_grade_select, Share.ciaq_grade_option, info["grade"])
+        self.send_text_wait(info["address"], Share.ciaq_address_input)
+        self.send_text_wait(info["university"], Share.ciaq_university_input)
+        self.send_text_wait(info["universityAddress"], Share.ciaq_universityAddress_input)
+        self.send_text_wait(info["college"], Share.ciaq_college_input)
+        self.send_text_wait(info["major"], Share.ciaq_major_input)
+        self.selector(Share.ciaq_subject_select, Share.ciaq_subject_option, info["subject"])
+        self.send_text_wait(info["GPA"], Share.ciaq_GPA_input)
+        self.send_text_wait(info["work"], Share.ciaq_work_input)
+        self.selector(Share.ciaq_status_select, Share.ciaq_status_option, info["status"])
+        self.selector(Share.ciaq_workExperience_select, Share.ciaq_workExperience_option, info["workExperience"])
+        self.click_wait(Share.submit_btn)
+
+    def selector(self, select_loc, options_loc, text):
+        """
+        閫氱敤閫夋嫨鍣紝鐩存帴璋冪敤閫夋嫨涓嬫媺妗嗛�夐」
+        :param select_loc: 鐐瑰嚮鍚庡嚭鐜颁笅鎷夐�夐」鐨勫厓绱犲畾浣�
+        :param options_loc: 閫夐」鐨勫厓绱犲畾浣�
+        :param text: 鍒ゆ柇鐐瑰嚮鐨勬枃鏈�
+        :return:
+        """
+        # 鐐瑰嚮涓嬫媺妗�
+        self.click_wait(select_loc)
+        time.sleep(1)
+        # 鑾峰彇鎵�鏈夐�夐」
+        options = self.get_elements_wait(options_loc)
+        # 鍒ゆ柇閫夐」鏄惁涓庝紶鍏ョ殑閫夐」鐩哥瓑
+        for opt in options:
+            if opt.text == text:
+                # 鐩哥瓑鍒欑偣鍑昏閫夐」
+                opt.click()
+                break
diff --git a/po/test_package_list_page.py b/po/test_package_list_page.py
index d64c593..6725bb6 100644
--- a/po/test_package_list_page.py
+++ b/po/test_package_list_page.py
@@ -223,6 +223,32 @@
                     opt.click()
                     break
 
+    def select_code_checkbox(self, check_text, uncheck_text):
+        """
+        閫夋嫨浜哄彛瀛︾紪鐮�
+        :param uncheck_text: 鍙栨秷閫変腑鐨勯�夋鏂囨湰锛屼互 , 鍒嗗壊
+        :param check_text: 閫夋嫨鐨勯�夋鏂囨湰锛屼互 , 鍒嗗壊
+        :return:
+        """
+        # 鑾峰彇鎵�鏈変汉鍙i�夌紪鐮侀�夋鍏冪礌
+        code_boxs = self.get_elements_wait(PackageList.add_code_checkbox)
+
+        # 灏哻heck_text鍒嗗壊
+        code_check_texts = check_text.split(',')
+        for code_text in code_check_texts:
+            for code_box in code_boxs:
+                if code_text == code_box.text:
+                    code_box.click()
+
+        # 灏哻heck_text鍒嗗壊
+        code_uncheck_texts = uncheck_text.split(',')
+        for code_text in code_uncheck_texts:
+            for code_box in code_boxs:
+                if code_text == code_box.text:
+                    code_box.click()
+
+
+
     def add_confirm(self):
         """
         鐐瑰嚮纭鎸夐挳
diff --git a/report/report.html b/report/report.html
index 5092261..f7900d7 100644
--- a/report/report.html
+++ b/report/report.html
@@ -253,9 +253,9 @@
 }
 </script>
     <h1>report.html</h1>
-    <p>Report generated on 18-Jul-2023 at 15:23:51 by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a> v3.2.0</p>
+    <p>Report generated on 18-Jul-2023 at 17:34:03 by <a href="https://pypi.python.org/pypi/pytest-html">pytest-html</a> v3.2.0</p>
     <h2>Summary</h2>
-    <p>5 tests ran in 63.57 seconds. </p>
+    <p>5 tests ran in 133.54 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">5 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">
@@ -270,8 +270,8 @@
       <tbody class="passed results-table-row">
         <tr>
           <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_vaq.py::TestVAQ::test_login[login]</td>
-          <td class="col-duration">5.14</td>
+          <td class="col-name">testcase/test_ciaq.py::TestCIAQ::test_login[login]</td>
+          <td class="col-duration">5.01</td>
           <td class="col-links"></td></tr>
         <tr>
           <td class="extra" colspan="4">
@@ -279,8 +279,8 @@
       <tbody class="passed results-table-row">
         <tr>
           <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_vaq.py::TestVAQ::test_create_package[VAQ]</td>
-          <td class="col-duration">14.39</td>
+          <td class="col-name">testcase/test_ciaq.py::TestCIAQ::test_create_package[CIAQ]</td>
+          <td class="col-duration">2.07</td>
           <td class="col-links"></td></tr>
         <tr>
           <td class="extra" colspan="4">
@@ -288,8 +288,8 @@
       <tbody class="passed results-table-row">
         <tr>
           <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_vaq.py::TestVAQ::test_open_url[VAQ]</td>
-          <td class="col-duration">12.75</td>
+          <td class="col-name">testcase/test_ciaq.py::TestCIAQ::test_open_url[CIAQ]</td>
+          <td class="col-duration">17.20</td>
           <td class="col-links"></td></tr>
         <tr>
           <td class="extra" colspan="4">
@@ -297,8 +297,8 @@
       <tbody class="passed results-table-row">
         <tr>
           <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_vaq.py::TestVAQ::test_answer</td>
-          <td class="col-duration">23.80</td>
+          <td class="col-name">testcase/test_ciaq.py::TestCIAQ::test_answer</td>
+          <td class="col-duration">101.78</td>
           <td class="col-links"></td></tr>
         <tr>
           <td class="extra" colspan="4">
@@ -306,8 +306,8 @@
       <tbody class="passed results-table-row">
         <tr>
           <td class="col-result">Passed</td>
-          <td class="col-name">testcase/test_vaq.py::TestVAQ::test_delete_package</td>
-          <td class="col-duration">7.34</td>
+          <td class="col-name">testcase/test_ciaq.py::TestCIAQ::test_delete_package</td>
+          <td class="col-duration">7.31</td>
           <td class="col-links"></td></tr>
         <tr>
           <td class="extra" colspan="4">
diff --git a/testcase/test_ciaq.py b/testcase/test_ciaq.py
new file mode 100644
index 0000000..f2f3046
--- /dev/null
+++ b/testcase/test_ciaq.py
@@ -0,0 +1,185 @@
+from datetime import datetime
+import time
+from selenium.webdriver.common.by import By
+
+import pytest
+from selenium import webdriver
+from po.login_page import LoginPage
+from po.home_page import HomePage
+from po.test_package_list_page import TestPackageListPage
+from po.share_add_page import ShareAddPage
+from po.ciaq_answer_page import CIAQAnswerPage
+from comm.my_random import *
+
+
+class TestCIAQ:
+    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):
+        """
+        鍒涘缓娴嬭瘯鍖�
+        :param data_read: 璇诲彇鏁版嵁
+        :return:
+        """
+        # 鑾峰彇driver
+        driver = TestCIAQ.driver
+        # 鍒涘缓home椤甸潰鐨勫璞�
+        home_page = HomePage(driver)
+        # 鐐瑰嚮宸︿晶鑿滃崟杩涘叆椤甸潰
+        home_page.menu_select(data_read["menu"])
+        # # 鍒涘缓娴嬭瘯鍖呭垪琛ㄩ〉闈㈢殑瀵硅薄
+        # test_package_list = TestPackageListPage(driver)
+        # # 鐐瑰嚮鍒涘缓鎸夐挳
+        # test_package_list.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.reportCompanyName_input(create_data["company"])
+        # # 閫夋嫨娴嬭瘯鍖呯被鍨�
+        # test_package_list.testPackageType_select(create_data["type"])
+        # # 閫夋嫨浜у搧鍖�
+        # test_package_list.prodTree_select(create_data["product"])
+        # # 杈撳叆hr閭
+        # test_package_list.hrReportEmail_input(create_data["hrEmail"])
+        # # 杈撳叆鏈夋晥鏈�
+        # test_package_list.invalidTime_input(create_data["invalid"])
+        # # 閫夋嫨閭�璇烽偖浠惰瑷�绫诲瀷
+        # test_package_list.testTemplateLangType_select(create_data["memberLang"])
+        # # 閫夋嫨HR閭欢璇█绫诲瀷
+        # test_package_list.hrTemplateLangType_select(create_data["hrReportLang"])
+        # # 閫夋嫨鎶ュ憡妯℃澘
+        # test_package_list.reportTemplate_select(create_data["reportTemplate"])
+        # # 鐐瑰嚮娴嬭瘯鑰呮帴鏀舵姤鍛�
+        # test_package_list.autoSendReport_checkbox()
+        # # 閫夋嫨娴嬭瘯鑰呮姤鍛婇偖绠辫瑷�绫诲瀷
+        # test_package_list.memberReportLangType_select(create_data["memberReportLang"])
+        #
+        # # 閫夋嫨浜哄彛瀛︾紪鐮�
+        # test_package_list.select_code_checkbox(create_data["checkCode"], create_data["uncheckCode"])
+        #
+        # # 鐐瑰嚮纭鎸夐挳
+        # test_package_list.add_confirm()
+        # time.sleep(2)
+        # # 鍒ゆ柇鏄惁鎴愬姛鍒涘缓
+        # assert test_package_list.is_create_success(test_package_name)
+        # time.sleep(5)
+
+    @pytest.mark.parametrize('data_read', ["CIAQ"], indirect=True)
+    def test_open_url(self, data_read: dict):
+        """
+        鎵撳紑鍒嗕韩閾炬帴
+        :return:
+        """
+        # 鑾峰彇driver
+        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.open_new_table_to_url(url)
+        # 鍒涘缓鍒嗕韩椤甸潰瀵硅薄
+        share_add = ShareAddPage(driver)
+        # 濉啓淇℃伅鎻愪氦骞惰幏鍙栨祴璇曢摼鎺�
+        name = random_string(8)
+        email = name + "@gmail.com"
+        test_url = share_add.page_default_operation(name, email)
+        # 褰撳墠椤甸潰鎵撳紑閾炬帴
+        driver.get(test_url)
+        # 鐐瑰嚮鎻愪氦鎸夐挳
+        share_add.submit_btn()
+        # 鑾峰彇鏁版嵁
+        info = data_read["info"]
+        # 濉啓鍩烘湰淇℃伅骞舵彁浜�
+        share_add.fill_info_CIAQ(info)
+        time.sleep(5)
+
+    def test_answer(self):
+        # 鑾峰彇driver
+        driver = TestCIAQ.driver
+        # 鍒涘缓answer瀵硅薄
+        answer_page = CIAQAnswerPage(driver)
+        # 鐐瑰嚮寮�濮嬫祴璇�
+        answer_page.start_btn()
+        # 寮�濮嬬瓟棰�
+        flag = answer_page.answer()
+        # 绛斿畬棰樺叧闂綋鍓嶆爣绛鹃〉
+        driver.close()
+        # 鍒囨崲鍒扮涓�涓爣绛鹃〉
+        answer_page.switch_window(0)
+        if flag is not None or not flag:
+            assert flag
+            return
+
+    def test_delete_package(self):
+        # 鑾峰彇driver
+        driver = TestCIAQ.driver
+        # 鍒涘缓娴嬭瘯鍖呭垪琛ㄩ〉闈㈢殑瀵硅薄
+        test_package_list = TestPackageListPage(driver)
+        # 鍒犻櫎娴嬭瘯鍖�
+        test_package_list.delete_package()
+        time.sleep(5)
+        # 鍏抽棴
+        driver.quit()
+
+
+if __name__ == '__main__':
+    pytest.main(["-s", __file__])

--
Gitblit v1.9.1