From 8c9395d6a0e07ea64a7ed88a466c5befb83178e3 Mon Sep 17 00:00:00 2001
From: 阳洁 <2077506045@qq.com>
Date: 星期五, 28 七月 2023 18:42:59 +0800
Subject: [PATCH] 测评系统自动测试

---
 testcase/test_2package_list.py |  820 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 820 insertions(+), 0 deletions(-)

diff --git a/testcase/test_2package_list.py b/testcase/test_2package_list.py
new file mode 100644
index 0000000..79c0606
--- /dev/null
+++ b/testcase/test_2package_list.py
@@ -0,0 +1,820 @@
+import os
+from datetime import datetime
+import time
+from selenium.webdriver.common.by import By
+from selenium.common.exceptions import TimeoutException
+from selenium.common.exceptions import NoSuchElementException
+
+import pytest
+from comm.comm import *
+from comm.read_data import *
+from comm.write_data import *
+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.member_detail_page import MemberDetailPage
+from po.report_page import ReportPage
+from po.share_add_page import ShareAddPage
+from po.maq_answer_page import MAQAnswerPage
+from po.caq_answer_page import CAQAnswerPage
+from comm.my_random import *
+
+
+class TestPackageList:
+    driver = None
+    test_package_name = "MAQV2鑷姩娴嬭瘯鍖�-20230727155906"
+    member_email = None
+
+    @pytest.mark.parametrize('data_read', ["testPackageList"], indirect=True)
+    def test_create_package(self, data_read: dict, driver):
+        """
+        鍒涘缓娴嬭瘯鍖�
+        :param data_read: 璇诲彇鏁版嵁
+        :return:
+        """
+        # 鍒涘缓home椤甸潰鐨勫璞�
+        home_page = HomePage(driver)
+        # 鐐瑰嚮宸︿晶鑿滃崟杩涘叆椤甸潰
+        home_page.menu_select(data_read["menu"])
+        # 鍒涘缓娴嬭瘯鍖呭垪琛ㄩ〉闈㈢殑瀵硅薄
+        test_package_list = TestPackageListPage(driver)
+        # 鍒涘缓娴嬭瘯鍖呭苟鎺ユ敹鍒涘缓鐨勬祴璇曞寘鍚嶇О
+        create_package_name = test_package_list.create_package(data_read["add"])
+        # 璧嬪�煎埌绫诲彉閲�
+        TestPackageList.test_package_name = create_package_name
+        time.sleep(5)
+        # 鍒ゆ柇鏄惁鎴愬姛鍒涘缓
+        assert test_package_list.is_create_success(create_package_name)
+
+    @pytest.mark.parametrize('data_read', ["testPackageList"], indirect=True)
+    def test_edit_package(self, data_read: dict, driver):
+        """
+        淇敼娴嬭瘯鍖�
+        :return:
+        """
+        # 鍒涘缓娴嬭瘯鍖呭垪琛ㄩ〉闈㈢殑瀵硅薄
+        test_package_list = TestPackageListPage(driver)
+        # 鍕鹃�夋柊鍒涘缓鐨勬祴璇曞寘
+        test_package_list.select_package_checkbox(TestPackageList.test_package_name)
+        # 鐐瑰嚮淇敼鎸夐挳
+        test_package_list.click(test_package_list.es.edit_btn)
+        # 鑾峰彇淇敼鏁版嵁
+        edit_data = data_read["edit"]
+        # 淇敼娴嬭瘯鍖�
+        test_package_name = test_package_list.edit_package(edit_data)
+        TestPackageList.test_package_name = test_package_name
+        time.sleep(5)
+        # 鏍¢獙鏄惁淇敼鎴愬姛
+        flag = test_package_list.verify_edit_success(test_package_name, edit_data)
+        # 鍒囨崲鍒颁笂涓�灞俰frame
+        test_package_list.switch_parent_iframe()
+        # 鐐瑰嚮鍏抽棴鎸夐挳
+        test_package_list.click(test_package_list.es.edit_cancel_btn)
+        assert flag
+
+    @pytest.mark.parametrize('data_read', ["memberDetail"], indirect=True)
+    def test_add_member(self, data_read: dict, driver):
+        """
+        鏂板璇勬祴浜哄憳
+        :param data_read:
+        :param driver:
+        :return:
+        """
+        # 鍒涘缓娴嬭瘯鍖呭垪琛ㄩ〉闈㈢殑瀵硅薄
+        test_package_list = TestPackageListPage(driver)
+        # 鐐瑰嚮娴嬭瘯鍖呭悕绉�
+        test_package_list.click_package_name(TestPackageList.test_package_name)
+        time.sleep(5)
+        # 鍒涘缓娴嬭瘎浜哄憳鍚嶅崟椤甸潰瀵硅薄
+        member_detail = MemberDetailPage(driver)
+        # 鏂板娴嬭瘎浜哄憳
+        member_email = member_detail.add_member(data_read["add"])
+        TestPackageList.member_email = member_email
+        time.sleep(5)
+        # 鏍¢獙鏄惁鏂板鎴愬姛
+        assert member_detail.is_create_success(member_email)
+
+    @pytest.mark.parametrize('data_read', ["memberDetail"], indirect=True)
+    def test_edit_member(self, data_read: dict, driver):
+        """
+        淇敼娴嬭瘎浜哄憳
+        :param data_read:
+        :param driver:
+        :return:
+        """
+        # 鍒涘缓娴嬭瘎浜哄憳鍚嶅崟椤甸潰瀵硅薄
+        member_detail = MemberDetailPage(driver)
+        # 淇敼娴嬭瘎浜哄憳
+        member_email = member_detail.edit_member(TestPackageList.member_email, data_read["edit"])
+        TestPackageList.member_email = member_email
+        time.sleep(5)
+        # 鏍¢獙鏄惁淇敼鎴愬姛
+        assert member_detail.is_edit_success(TestPackageList.member_email, data_read["edit"])
+
+
+
+    @pytest.mark.parametrize('data_read', ["memberDetail"], indirect=True)
+    def test_export_member(self, data_read: dict, driver):
+        """瀵煎嚭"""
+        # 鍒涘缓娴嬭瘎浜哄憳鍚嶅崟椤甸潰瀵硅薄
+        member_detail = MemberDetailPage(driver)
+        # 鑾峰彇褰撳墠椤圭洰鏍硅矾寰�
+        root_path = os.getcwd()
+        # 鎷兼帴涓嬭浇鏂囦欢鐩綍
+        dir_path = root_path + r"\download"
+        # 鑾峰彇鐩綍涓嬫墍鏈夋枃浠�
+        old_file_names = []
+        for filename in os.listdir(dir_path):
+            if os.path.isfile(os.path.join(dir_path, filename)):
+                old_file_names.append(filename)
+
+        # 鐐瑰嚮瀵煎嚭鎸夐挳
+        member_detail.click(member_detail.es.export_btn)
+        # 鐐瑰嚮纭妗嗙‘璁�
+        member_detail.click(member_detail.es.layer_confirm_btn, timeout=10)
+        i = 0
+        while i < data_read["downloadWaitTime"]:
+            # 鑾峰彇鐩綍涓嬫墍鏈夋枃浠�
+            new_file_names = []
+            for filename in os.listdir(dir_path):
+                if os.path.isfile(os.path.join(dir_path, filename)):
+                    new_file_names.append(filename)
+            # 鍒ゆ柇鏃ф枃浠剁殑鏁伴噺涓庢柊鏂囦欢鐨勬暟閲忔槸鍚︾浉鍚岋紝鐩稿悓鍒欑潯鐪犱竴绉�
+            if len(old_file_names) == len(new_file_names):
+                time.sleep(1)
+                i += 1
+                continue
+            else:
+                # 鍚﹀垯鐩存帴閫�鍑哄惊鐜�
+                break
+        else:
+            assert False
+        assert True
+
+    @pytest.mark.parametrize('data_read', ["memberDetail"], indirect=True)
+    def test_export_url(self, data_read: dict, driver):
+        """瀵煎嚭娴嬭瘯閾炬帴"""
+        # 鍒涘缓娴嬭瘎浜哄憳鍚嶅崟椤甸潰瀵硅薄
+        member_detail = MemberDetailPage(driver)
+        # 鑾峰彇褰撳墠椤圭洰鏍硅矾寰�
+        root_path = os.getcwd()
+        # 鎷兼帴涓嬭浇鏂囦欢鐩綍
+        dir_path = root_path + r"\download"
+        # 鑾峰彇鐩綍涓嬫墍鏈夋枃浠�
+        old_file_names = []
+        for filename in os.listdir(dir_path):
+            if os.path.isfile(os.path.join(dir_path, filename)):
+                old_file_names.append(filename)
+
+        # 鐐瑰嚮瀵煎嚭娴嬭瘯閾炬帴鎸夐挳
+        member_detail.click(member_detail.es.export_url_btn)
+        # 鐐瑰嚮纭妗嗙‘璁�
+        member_detail.click(member_detail.es.layer_confirm_btn, timeout=10)
+        i = 0
+        while i < data_read["downloadWaitTime"]:
+            # 鑾峰彇鐩綍涓嬫墍鏈夋枃浠�
+            new_file_names = []
+            for filename in os.listdir(dir_path):
+                if os.path.isfile(os.path.join(dir_path, filename)):
+                    new_file_names.append(filename)
+            # 鍒ゆ柇鏃ф枃浠剁殑鏁伴噺涓庢柊鏂囦欢鐨勬暟閲忔槸鍚︾浉鍚岋紝鐩稿悓鍒欑潯鐪犱竴绉�
+            if len(old_file_names) == len(new_file_names):
+                time.sleep(1)
+                i += 1
+                continue
+            else:
+                # 鍚﹀垯鐩存帴閫�鍑哄惊鐜�
+                break
+        else:
+            assert False
+        assert True
+
+    @pytest.mark.parametrize('data_read', ["memberDetail"], indirect=True)
+    def test_import(self, data_read: dict, driver):
+        """鎵归噺瀵煎叆"""
+        # 鍒涘缓娴嬭瘎浜哄憳鍚嶅崟椤甸潰瀵硅薄
+        member_detail = MemberDetailPage(driver)
+        # 鑾峰彇褰撳墠椤圭洰鏍硅矾寰�
+        root_path = os.getcwd()
+        # 鎷兼帴瀵煎叆鏂囦欢璺緞
+        file_path = root_path + r"\import\member_import.xlsx"
+        # 鐐瑰嚮鎵归噺瀵煎叆鎸夐挳
+        member_detail.click(member_detail.es.import_btn)
+        # 鍙戦�佹枃浠惰矾寰勫埌鏂囦欢涓婁紶杈撳叆妗�
+        member_detail.fill(member_detail.es.import_input, file_path)
+        time.sleep(2)
+        # 鐐瑰嚮瀵煎叆鎸夐挳
+        member_detail.click(member_detail.es.import_confirm_btn)
+        time.sleep(2)
+        # 鍒ゆ柇鏄惁瀵煎叆鎴愬姛
+        try:
+            member_detail.get_ele(member_detail.es.import_success_text, timeout=10)
+            # 鐐瑰嚮纭鎸夐挳
+            member_detail.click(member_detail.es.layer_confirm_btn)
+            assert True
+        except TimeoutException:
+            try:
+                # 鐐瑰嚮纭鎸夐挳锛屽鏋滀笉瀛樺湪鍒欎笉鐐瑰嚮
+                member_detail.click(member_detail.es.layer_confirm_btn, timeout=10)
+            except TimeoutException:
+                pass
+            assert False
+
+    @pytest.mark.parametrize('data_read', ["memberDetail"], indirect=True)
+    def test_send_email(self, data_read: dict, driver):
+        """鍙戦�侀偖浠�"""
+        # 鍒涘缓娴嬭瘎浜哄憳鍚嶅崟椤甸潰瀵硅薄
+        member_detail = MemberDetailPage(driver)
+        # 鍕鹃�塼able澶村閫夋
+        member_detail.click(member_detail.es.table_thead_checkbox)
+        # 鍕鹃�変笉鍙戦�佺殑娴嬭瘎浜哄憳
+        member_detail.unselect_email_checkbox(TestPackageList.member_email)
+        # 鐐瑰嚮鍙戦�侀偖浠舵寜閽�
+        member_detail.click(member_detail.es.send_email_btn)
+        # 鐐瑰嚮纭鎸夐挳
+        member_detail.click(member_detail.es.layer_confirm_btn, timeout=10)
+        time.sleep(2)
+        # 鍐嶆鐐瑰嚮纭鎸夐挳
+        member_detail.click(member_detail.es.layer_confirm_btn, timeout=10)
+        # 鐐瑰嚮鏌ョ湅鍙戦�佺姸鎬佹寜閽�
+        member_detail.click(member_detail.es.send_status_btn)
+        time.sleep(5)
+        # 鍒囨崲鍒颁笂涓�灞俰frame
+        member_detail.switch_parent_iframe()
+        # 鍒囨崲鍒板彂閫佺姸鎬乮frame
+        member_detail.switch_iframe(member_detail.es.send_status_iframe)
+        # 鑾峰彇鍒版墍鏈塼r鍒楄〃
+        trs = member_detail.get_eles(member_detail.es.send_status_table_tr)
+        # 鍒ゆ柇鏁伴噺鏄惁澶т簬0
+        if len(trs) > 0:
+            assert True
+        else:
+            assert False
+        # 鍒犻櫎鍙戦�佷换鍔�
+        # 鍕鹃�夋墍鏈夎褰�
+        member_detail.click(member_detail.es.table_thead_checkbox)
+        # 鐐瑰嚮鍒犻櫎鎸夐挳
+        member_detail.click(member_detail.es.delete_btn)
+        # 鐐瑰嚮纭鎸夐挳
+        member_detail.click(member_detail.es.layer_confirm_btn, timeout=10)
+        # 鍏抽棴鏍囩
+        # 鍒涘缓home椤甸潰瀵硅薄
+        home = HomePage(driver)
+        # 鍏抽棴鍙戦�佺姸鎬侀〉闈�
+        home.close_tab(member_detail.es.tab_name_send_status)
+
+    @pytest.mark.parametrize('data_read', ["memberDetail"], indirect=True)
+    def test_send_sms(self, data_read: dict, driver):
+        """鍙戦�佺煭淇�"""
+        # 鍒涘缓娴嬭瘎浜哄憳鍚嶅崟椤甸潰瀵硅薄
+        member_detail = MemberDetailPage(driver)
+        # 鍕鹃�塼able澶村閫夋
+        member_detail.click(member_detail.es.table_thead_checkbox)
+        # 鍕鹃�変笉鍙戦�佺殑娴嬭瘎浜哄憳
+        member_detail.unselect_email_checkbox(TestPackageList.member_email)
+        # 鐐瑰嚮鍙戦�侀偖浠舵寜閽�
+        member_detail.click(member_detail.es.send_sms_btn)
+        # 鐐瑰嚮纭鎸夐挳
+        member_detail.click(member_detail.es.layer_confirm_btn, timeout=10)
+        time.sleep(2)
+        # 鍐嶆鐐瑰嚮纭鎸夐挳
+        member_detail.click(member_detail.es.layer_confirm_btn, timeout=10)
+        # 鐐瑰嚮鏌ョ湅鍙戦�佺姸鎬佹寜閽�
+        member_detail.click(member_detail.es.send_status_btn)
+        time.sleep(5)
+        # 鍒囨崲鍒颁笂涓�灞俰frame
+        member_detail.switch_parent_iframe()
+        # 鍒囨崲鍒板彂閫佺姸鎬乮frame
+        member_detail.switch_iframe(member_detail.es.send_status_iframe)
+        # 鑾峰彇鍒版墍鏈塼r鍒楄〃
+        trs = member_detail.get_eles(member_detail.es.send_status_table_tr)
+        # 鍒ゆ柇鏁伴噺鏄惁澶т簬0
+        if len(trs) > 0:
+            assert True
+        else:
+            assert False
+        # 鍒犻櫎鍙戦�佷换鍔�
+        # 鍕鹃�夋墍鏈夎褰�
+        member_detail.click(member_detail.es.table_thead_checkbox)
+        # 鐐瑰嚮鍒犻櫎鎸夐挳
+        member_detail.click(member_detail.es.delete_btn)
+        # 鐐瑰嚮纭鎸夐挳
+        member_detail.click(member_detail.es.layer_confirm_btn, timeout=10)
+        # 鍏抽棴鏍囩
+        # 鍒涘缓home椤甸潰瀵硅薄
+        home = HomePage(driver)
+        # 鍏抽棴鍙戦�佺姸鎬侀〉闈�
+        home.close_tab(member_detail.es.tab_name_send_status)
+
+    @pytest.mark.parametrize('data_read', ["memberDetail"], indirect=True)
+    def test_skip_report(self, data_read: dict, driver):
+        """璺宠浆鏌ョ湅鎶ュ憡椤甸潰"""
+        # 鍒涘缓娴嬭瘎浜哄憳鍚嶅崟椤甸潰瀵硅薄
+        member_detail = MemberDetailPage(driver)
+        # 鐐瑰嚮鏌ョ湅鎶ュ憡
+        member_detail.click(member_detail.es.table_report_btn)
+        time.sleep(5)
+        # 杩斿洖涓婁竴灞俰frame
+        member_detail.switch_parent_iframe()
+        # 鍒ゆ柇鏄惁瀛樺湪鏌ョ湅鎶ュ憡鐨刬frame
+        try:
+            member_detail.get_ele(member_detail.es.report_iframe, timeout=10)
+            # 鍏抽棴鏍囩
+            # 鍒涘缓home椤甸潰瀵硅薄
+            home = HomePage(driver)
+            # 鍏抽棴鍙戦�佺姸鎬侀〉闈�
+            home.close_tab(member_detail.es.tab_name_send_status)
+            assert True
+        except TimeoutException:
+            assert False
+
+    @pytest.mark.parametrize('data_read', ["memberDetail"], indirect=True)
+    def test_remove_member(self, data_read: dict, driver):
+        """
+        鍒犻櫎娴嬭瘎浜哄憳
+        :param data_read:
+        :param driver:
+        :return:
+        """
+        # 鍒涘缓娴嬭瘎浜哄憳鍚嶅崟椤甸潰瀵硅薄
+        member_detail = MemberDetailPage(driver)
+        # 鍕鹃�塼able澶村閫夋
+        member_detail.click(member_detail.es.table_thead_checkbox)
+        # 鍕鹃�変笉鍒犻櫎鐨勬祴璇勪汉鍛�
+        member_detail.unselect_email_checkbox(TestPackageList.member_email)
+        # 鐐瑰嚮鍒犻櫎鎸夐挳
+        member_detail.click(member_detail.es.delete_btn)
+        # 鐐瑰嚮鍒犻櫎纭鎸夐挳
+        member_detail.click(member_detail.es.layer_confirm_btn, timeout=10)
+        # 鍒ゆ柇鍒犻櫎鏄惁鎴愬姛
+        try:
+            member_detail.wait_visible(member_detail.es.operate_success_layer)
+            assert True
+        except TimeoutException:
+            assert False
+        # 鍒涘缓home椤甸潰瀵硅薄
+        home = HomePage(driver)
+        # 鍏抽棴褰撳墠椤甸潰
+        home.close_tab(member_detail.es.tab_name_member_detail)
+
+    @pytest.mark.parametrize('data_read', ["testPackageList"], indirect=True)
+    def test_edit_prompt(self, data_read: dict, driver):
+        """浜嬩腑鎻愮ず璇慨鏀�"""
+        # 鍒涘缓娴嬭瘯鍖呭垪琛ㄩ〉闈㈢殑瀵硅薄
+        test_package_list = TestPackageListPage(driver)
+        # 鍕鹃�夋柊鍒涘缓鐨勬祴璇曞寘
+        test_package_list.select_package_checkbox(TestPackageList.test_package_name)
+        # 鐐瑰嚮浜嬩腑鎻愮ず璇寜閽�
+        test_package_list.click(test_package_list.es.hint_btn)
+        # 鍒囨崲鍒癷frame
+        test_package_list.switch_iframe(test_package_list.es.hint_iframe)
+        # 鐐瑰嚮绗洓涓緭鍏ユ
+        test_package_list.click(test_package_list.es.hint_textarea)
+        # 淇敼鍐呭
+        test_package_list.fill(test_package_list.es.hint_modal_span, data_read["hint"])
+        # 鐐瑰嚮淇濆瓨
+        test_package_list.click(test_package_list.es.hint_modal_save_btn)
+        # 杩斿洖涓婁竴灞�
+        test_package_list.switch_parent_iframe()
+        # 鐐瑰嚮纭鎸夐挳
+        test_package_list.click(test_package_list.es.layer_confirm_btn)
+        # 鍒ゆ柇鎿嶄綔鎴愬姛寮圭獥鏄惁瀛樺湪
+        flag = True
+        try:
+            test_package_list.get_ele(test_package_list.es.operate_success_layer, timeout=20)
+        except TimeoutException:
+            flag = False
+
+        if flag:
+            time.sleep(2)
+            # 鑾峰彇鍒板垎浜摼鎺�
+            url = test_package_list.get_share_url(TestPackageList.test_package_name)
+            # 鎵撳紑鏂版爣绛鹃〉鍔犺浇url
+            test_package_list.goto_new_table(url)
+            # 鍒涘缓鍒嗕韩椤甸潰瀵硅薄
+            share_add = ShareAddPage(driver)
+            # 濉啓淇℃伅鎻愪氦骞惰幏鍙栨祴璇曢摼鎺�
+            test_url = share_add.get_test_url(data_read["name"], data_read["email"])
+            # 褰撳墠椤甸潰鎵撳紑閾炬帴
+            share_add.goto(test_url)
+            # 鐐瑰嚮鎻愪氦鎸夐挳
+            share_add.click(share_add.es.submit_btn, timeout=10)
+            # 鑾峰彇鏁版嵁
+            info = data_read["info"]
+            # 濉啓鍩烘湰淇℃伅骞舵彁浜�
+            share_add.fill_info(data_read["email"], info["position"], info["dept"])
+            # 鍒涘缓answer瀵硅薄
+            answer_page = MAQAnswerPage(driver)
+            # 寮�濮嬬瓟棰�
+            flag = answer_page.answer(hint=data_read["hint"], question=data_read["question"]["MAQ"])
+            # 绛斿畬棰樺叧闂綋鍓嶆爣绛鹃〉
+            driver.close()
+            # 鍒囨崲鍒扮涓�涓爣绛鹃〉
+            answer_page.switch_window(0)
+            # 缃戠粶寮傚父閲嶆柊绛旈
+            if flag == "缃戠粶寮傚父":
+                # 鍒涘缓娴嬭瘯鍖呭垪琛ㄩ〉闈㈢殑瀵硅薄
+                test_package_list = TestPackageListPage(driver)
+                # 鍕鹃�夋柊鍒涘缓鐨勬祴璇曞寘
+                test_package_list.select_package_checkbox(TestPackageList.test_package_name)
+                # 鑾峰彇鍒板垎浜摼鎺�
+                url = test_package_list.get_share_url(TestPackageList.test_package_name)
+                # 鎵撳紑鏂版爣绛鹃〉鍔犺浇url
+                test_package_list.goto_new_table(url)
+                # 鍒涘缓鍒嗕韩椤甸潰瀵硅薄
+                share_add = ShareAddPage(driver)
+                # 濉啓淇℃伅鎻愪氦骞惰幏鍙栨祴璇曢摼鎺�
+                test_url = share_add.get_test_url(data_read["name"], data_read["email"])
+                # 褰撳墠椤甸潰鎵撳紑閾炬帴
+                share_add.goto(test_url)
+                # 鐐瑰嚮鎻愪氦鎸夐挳
+                share_add.click(share_add.es.submit_btn, timeout=10)
+                # 鑾峰彇鏁版嵁
+                info = data_read["info"]
+                # 濉啓鍩烘湰淇℃伅骞舵彁浜�
+                share_add.fill_info(data_read["email"], info["position"], info["dept"])
+                # 鍒涘缓answer瀵硅薄
+                answer_page = MAQAnswerPage(driver)
+                # 寮�濮嬬瓟棰�
+                flag = answer_page.answer(hint=data_read["hint"], question=data_read["question"]["MAQ"])
+                # 绛斿畬棰樺叧闂綋鍓嶆爣绛鹃〉
+                driver.close()
+                # 鍒囨崲鍒扮涓�涓爣绛鹃〉
+                answer_page.switch_window(0)
+            if flag is not None or not flag:
+                assert flag
+
+    @pytest.mark.parametrize('data_read', ["testPackageList"], indirect=True)
+    def test_verify_member_status(self, data_read: dict, driver):
+        """楠岃瘉娴嬭瘎浜哄憳鐘舵��"""
+        # 鍒涘缓娴嬭瘯鍖呭垪琛ㄩ〉闈㈢殑瀵硅薄
+        test_package_list = TestPackageListPage(driver)
+        # 鐐瑰嚮娴嬭瘯鍖呭悕绉�
+        test_package_list.click_package_name(TestPackageList.test_package_name)
+        time.sleep(5)
+        # 鍒涘缓娴嬭瘎浜哄憳鍚嶅崟椤甸潰瀵硅薄
+        member_detail = MemberDetailPage(driver)
+        # 鑾峰彇鍒楄〃
+        tr = member_detail.get_eles(member_detail.es.table_data_tr)[0]
+        # 鑾峰彇褰撳墠鏃ユ湡
+        now = datetime.now()
+        # 鎻愬彇骞淬�佹湀銆佹棩
+        year = now.year
+        month = now.month
+        if month < 10:
+            month = "0" + str(month)
+        day = now.day
+        if day < 10:
+            day = "0" + str(day)
+        # 鎷兼帴鏃ユ湡
+        date = f"{year}-{month}-{day}"
+        # 鑾峰彇绛旈寮�濮嬫椂闂�
+        start_time = tr.find_element(By.XPATH, "td[6]").text
+        # 鑾峰彇绛旈缁撴潫鏃堕棿
+        end_time = tr.find_element(By.XPATH, "td[7]").text
+        # 鑾峰彇鐘舵��
+        status = tr.find_element(By.XPATH, "td[12]/span").text
+        # 楠岃瘉
+        if date in start_time and date in end_time and status == "瀹屾垚":
+            assert True
+        else:
+            assert False
+        # 鍒涘缓home椤甸潰瀵硅薄
+        home = HomePage(driver)
+        # 鍏抽棴鍙戦�佺姸鎬侀〉闈�
+        home.close_tab(member_detail.es.tab_name_member_detail)
+
+    @pytest.mark.parametrize('data_read', ["testPackageList"], indirect=True)
+    def test_generate_export_report(self, data_read: dict, driver):
+        """閲嶆柊鐢熸垚骞跺鍑烘姤鍛�"""
+        # 鍒涘缓娴嬭瘯鍖呭垪琛ㄩ〉闈㈢殑瀵硅薄
+        test_package_list = TestPackageListPage(driver)
+        # 鍕鹃�夋祴璇曞寘
+        test_package_list.select_package_checkbox(TestPackageList.test_package_name)
+        # 鐐瑰嚮璇勬祴鎶ュ憡鎸夐挳
+        test_package_list.click(test_package_list.es.report_btn)
+        time.sleep(5)
+        # 鑾峰彇褰撳墠椤圭洰鏍硅矾寰�
+        root_path = os.getcwd()
+        # 鎷兼帴涓嬭浇鏂囦欢鐩綍
+        dir_path = root_path + r"\download"
+        # 鑾峰彇鐩綍涓嬫墍鏈夋枃浠�
+        old_file_names = []
+        for filename in os.listdir(dir_path):
+            if os.path.isfile(os.path.join(dir_path, filename)):
+                old_file_names.append(filename)
+
+        # 鍒涘缓report椤甸潰瀵硅薄
+        report = ReportPage(driver)
+        # 鍕鹃�夋墍鏈夎褰�
+        report.click(report.es.table_thead_checkbox)
+        # 鐐瑰嚮閲嶆柊鐢熸垚鎶ュ憡骞跺鍑�
+        report.click(report.es.generate_export_btn)
+        time.sleep(2)
+        while True:
+            try:
+                # 鍔犺浇妗嗗瓨鍦ㄧ潯鐪犱竴绉�
+                report.get_ele(report.es.layer_reload)
+                time.sleep(1)
+            except NoSuchElementException:
+                # 涓嶅瓨鍦ㄨ烦鍑哄惊鐜�
+                break
+
+        i = 0
+        while i < data_read["downloadWaitTime"]:
+            # 鑾峰彇鐩綍涓嬫墍鏈夋枃浠�
+            new_file_names = []
+            for filename in os.listdir(dir_path):
+                if os.path.isfile(os.path.join(dir_path, filename)):
+                    new_file_names.append(filename)
+            # 鍒ゆ柇鏃ф枃浠剁殑鏁伴噺涓庢柊鏂囦欢鐨勬暟閲忔槸鍚︾浉鍚岋紝鐩稿悓鍒欑潯鐪犱竴绉�
+            if len(old_file_names) == len(new_file_names):
+                time.sleep(1)
+                i += 1
+                continue
+            else:
+                # 鍚﹀垯鐩存帴閫�鍑哄惊鐜�
+                break
+        else:
+            assert False
+        assert True
+
+    @pytest.mark.parametrize('data_read', ["testPackageList"], indirect=True)
+    def test_download_report(self, data_read: dict, driver):
+        """涓嬭浇宸茬敓鎴愭姤鍛�"""
+        # 鑾峰彇褰撳墠椤圭洰鏍硅矾寰�
+        root_path = os.getcwd()
+        # 鎷兼帴涓嬭浇鏂囦欢鐩綍
+        dir_path = root_path + r"\download"
+        # 鑾峰彇鐩綍涓嬫墍鏈夋枃浠�
+        old_file_names = []
+        for filename in os.listdir(dir_path):
+            if os.path.isfile(os.path.join(dir_path, filename)):
+                old_file_names.append(filename)
+
+        # 鍒涘缓report椤甸潰瀵硅薄
+        report = ReportPage(driver)
+        # 鐐瑰嚮涓嬭浇宸茬敓鎴愭姤鍛�
+        report.click(report.es.download_report_btn)
+        time.sleep(2)
+        while True:
+            try:
+                # 鍔犺浇妗嗗瓨鍦ㄧ潯鐪犱竴绉�
+                report.get_ele(report.es.layer_reload)
+                time.sleep(1)
+            except NoSuchElementException:
+                # 涓嶅瓨鍦ㄨ烦鍑哄惊鐜�
+                break
+
+        i = 0
+        while i < data_read["downloadWaitTime"]:
+            # 鑾峰彇鐩綍涓嬫墍鏈夋枃浠�
+            new_file_names = []
+            for filename in os.listdir(dir_path):
+                if os.path.isfile(os.path.join(dir_path, filename)):
+                    new_file_names.append(filename)
+            # 鍒ゆ柇鏃ф枃浠剁殑鏁伴噺涓庢柊鏂囦欢鐨勬暟閲忔槸鍚︾浉鍚岋紝鐩稿悓鍒欑潯鐪犱竴绉�
+            if len(old_file_names) == len(new_file_names):
+                time.sleep(1)
+                i += 1
+                continue
+            else:
+                # 鍚﹀垯鐩存帴閫�鍑哄惊鐜�
+                break
+        else:
+            assert False
+        assert True
+
+    @pytest.mark.parametrize('data_read', ["testPackageList"], indirect=True)
+    def test_export_report(self, data_read: dict, driver):
+        """瀵煎嚭鎶ュ憡"""
+        # 鑾峰彇褰撳墠椤圭洰鏍硅矾寰�
+        root_path = os.getcwd()
+        # 鎷兼帴涓嬭浇鏂囦欢鐩綍
+        dir_path = root_path + r"\download"
+        # 鑾峰彇鐩綍涓嬫墍鏈夋枃浠�
+        old_file_names = listdir(dir_path)
+        # 鍒涘缓report椤甸潰瀵硅薄
+        report = ReportPage(driver)
+        # 鐐瑰嚮涓嬭浇宸茬敓鎴愭姤鍛�
+        report.click(report.es.export_btn)
+        time.sleep(2)
+
+        # 绛夊緟鍔犺浇妗嗘秷澶�
+        report.wait_layer_reload_hide()
+
+        i = 0
+        while i < data_read["downloadWaitTime"]:
+            # 鑾峰彇鐩綍涓嬫墍鏈夋枃浠�
+            new_file_names = listdir(dir_path)
+            # 鍒ゆ柇鏃ф枃浠剁殑鏁伴噺涓庢柊鏂囦欢鐨勬暟閲忔槸鍚︾浉鍚岋紝鐩稿悓鍒欑潯鐪犱竴绉�
+            if len(old_file_names) == len(new_file_names):
+                time.sleep(1)
+                i += 1
+                continue
+            else:
+                # 鍚﹀垯鐩存帴閫�鍑哄惊鐜�
+                break
+        else:
+            assert False
+        assert True
+
+    @pytest.mark.parametrize('data_read', ["testPackageList"], indirect=True)
+    def test_export_data(self, data_read: dict, driver):
+        """瀵煎嚭娴嬭瘯鏁版嵁"""
+        # 鑾峰彇褰撳墠椤圭洰鏍硅矾寰�
+        root_path = os.getcwd()
+        # 鎷兼帴涓嬭浇鏂囦欢鐩綍
+        dir_path = root_path + r"\download"
+        # 鑾峰彇鐩綍涓嬫墍鏈夋枃浠�
+        old_file_names = listdir(dir_path)
+        # 鍒涘缓report椤甸潰瀵硅薄
+        report = ReportPage(driver)
+        # 鐐瑰嚮瀵煎嚭娴嬭瘯鏁版嵁鎸夐挳
+        report.click(report.es.export_data_btn)
+        time.sleep(2)
+
+        # 绛夊緟鍔犺浇妗嗘秷澶�
+        report.wait_layer_reload_hide()
+
+        new_file_names = []
+
+        i = 0
+        while i < data_read["downloadWaitTime"]:
+            # 鑾峰彇鐩綍涓嬫墍鏈夋枃浠�
+            new_file_names = listdir(dir_path)
+            # 鍒ゆ柇鏃ф枃浠剁殑鏁伴噺涓庢柊鏂囦欢鐨勬暟閲忔槸鍚︾浉鍚岋紝鐩稿悓鍒欑潯鐪犱竴绉�
+            if len(old_file_names) == len(new_file_names):
+                time.sleep(1)
+                i += 1
+                continue
+            else:
+                # 鍒ゆ柇鏂扮殑鏂囦欢鍚嶆槸鍚﹀寘鍚湭纭
+                for file_name in new_file_names:
+                    if "鏈‘璁�" in file_name:
+                        new_file_names = listdir(dir_path)
+                        break
+                else:
+                    # 鍚﹀垯鐩存帴閫�鍑哄惊鐜�
+                    break
+        else:
+            assert False
+
+        # 鑾峰彇涓や釜鍒楄〃涓殑宸泦
+        result = set(old_file_names).symmetric_difference(set(new_file_names))
+        result_list = list(result)
+        file_name = dir_path + "\\" + result_list[0]
+        # 璇诲彇鏂囦欢鏁版嵁
+        data_list = read_excel(file_name, "Sheet1")
+        # 瀵煎嚭鐨勬暟鎹�
+        excel_data = data_list[3]
+        # 绛旈鐨勬暟鎹�
+        answer_data: dict = data_read["question"]["MAQ"]
+        # 瀵规瘮鏁版嵁
+        for key in answer_data.keys():
+            if str(excel_data[key]) != str(excel_data[key]):
+                print(key + "鏁版嵁閿欒")
+                # 鍒涘缓report椤甸潰瀵硅薄
+                report = ReportPage(driver)
+                home = HomePage(driver)
+                # 鍏抽棴鏍囩椤�
+                home.close_tab(report.es.tab_name_report)
+                assert False
+        # 鍒涘缓report椤甸潰瀵硅薄
+        report = ReportPage(driver)
+        home = HomePage(driver)
+        # 鍏抽棴鏍囩椤�
+        home.close_tab(report.es.tab_name_report)
+        assert True
+
+    @pytest.mark.parametrize('data_read', ["testPackageList"], indirect=True)
+    def test_hr_resend(self, data_read: dict, driver):
+        """HR閭欢琛ュ彂"""
+        # 鍒涘缓娴嬭瘯鍖呭垪琛ㄩ〉闈㈢殑瀵硅薄
+        test_package_list = TestPackageListPage(driver)
+        # 鐐瑰嚮娴嬭瘯鍖呭悕绉�
+        test_package_list.click_package_name(TestPackageList.test_package_name)
+        # 鍒涘缓娴嬭瘎浜哄憳鍚嶅崟瀵硅薄
+        member = MemberDetailPage(driver)
+        # 鐐瑰嚮鏌ョ湅鎶ュ憡閭欢鍙戦�佽褰�
+        member.click(member.es.report_send_log_btn)
+        time.sleep(5)
+        member.switch_parent_iframe()
+        # 鍒囨崲iframe
+        member.switch_iframe(member.es.report_send_log_iframe)
+        # 鑾峰彇琛ュ彂涔嬪墠鐨勯噸璇曟鏁�
+        before_resend_number = int(member.get_ele(member.es.resend_number_text).text)
+        # 鐐瑰嚮鍏ㄩ�夋寜閽�
+        member.click(member.es.table_thead_checkbox)
+        # 鐐瑰嚮HR閭欢琛ュ彂鎸夐挳
+        member.click(member.es.hr_resend_btn)
+        # 鐐瑰嚮纭鎸夐挳
+        member.click(member.es.layer_confirm_btn)
+        time.sleep(2)
+        # 绛夊緟鍔犺浇瀹屾垚
+        while True:
+            try:
+                # 鍔犺浇妗嗗瓨鍦ㄧ潯鐪犱竴绉�
+                member.get_ele(member.es.layer_reload)
+                time.sleep(1)
+            except NoSuchElementException:
+                # 涓嶅瓨鍦ㄨ烦鍑哄惊鐜�
+                break
+        time.sleep(2)
+        # 鑾峰彇琛ュ彂涔嬪悗鐨勯噸璇曟鏁�
+        after_resend_number = int(member.get_ele(member.es.resend_number_text).text)
+        # 姣旇緝涓ゆ
+        if before_resend_number + 1 == after_resend_number:
+            assert True
+        else:
+            assert False
+
+    @pytest.mark.parametrize('data_read', ["testPackageList"], indirect=True)
+    def test_member_resend(self, data_read: dict, driver):
+        """娴嬭瘯鑰呴偖浠惰ˉ鍙�"""
+        # 鍒涘缓娴嬭瘎浜哄憳鍚嶅崟瀵硅薄
+        member = MemberDetailPage(driver)
+        member.switch_parent_iframe()
+        # 鍒囨崲iframe
+        member.switch_iframe(member.es.report_send_log_iframe)
+        # 鑾峰彇琛ュ彂涔嬪墠鐨勯噸璇曟鏁�
+        before_resend_number = int(member.get_ele(member.es.resend_number_text).text)
+        # 鐐瑰嚮鍏ㄩ�夋寜閽�
+        member.click(member.es.table_thead_checkbox)
+        # 鐐瑰嚮娴嬭瘯鑰呴偖浠惰ˉ鍙戞寜閽�
+        member.click(member.es.member_resend_btn)
+        # 鐐瑰嚮纭鎸夐挳
+        member.click(member.es.layer_confirm_btn)
+        time.sleep(2)
+        # 绛夊緟鍔犺浇瀹屾垚
+        while True:
+            try:
+                # 鍔犺浇妗嗗瓨鍦ㄧ潯鐪犱竴绉�
+                member.get_ele(member.es.layer_reload)
+                time.sleep(1)
+            except NoSuchElementException:
+                # 涓嶅瓨鍦ㄨ烦鍑哄惊鐜�
+                break
+        time.sleep(2)
+        # 鑾峰彇琛ュ彂涔嬪悗鐨勯噸璇曟鏁�
+        after_resend_number = int(member.get_ele(member.es.resend_number_text).text)
+        # 姣旇緝涓ゆ
+        if before_resend_number + 1 == after_resend_number:
+            assert True
+        else:
+            assert False
+        home = HomePage(driver)
+        # 鍏抽棴鏍囩椤�
+        home.close_tab(member.es.tab_name_report_send_log)
+        home.close_tab(member.es.tab_name_member_detail)
+
+    # @pytest.mark.parametrize('data_read', ["memberDetail"], indirect=True)
+    # def test_recover_package(self, data_read: dict, driver):
+    #     # 鍒涘缓娴嬭瘯鍖呭垪琛ㄩ〉闈㈢殑瀵硅薄
+    #     test_package_list = TestPackageListPage(driver)
+    #     # 鐐瑰嚮鍥炴敹娴嬭瘯鍖呮寜閽�
+    #     test_package_list.click(test_package_list.es.recover_btn)
+    #     # 鐐瑰嚮纭鎸夐挳
+    #     test_package_list.click(test_package_list.es.layer_confirm_btn)
+    #     time.sleep(2)
+    #     # 鍐嶆鐐瑰嚮纭鎸夐挳
+    #     test_package_list.click(test_package_list.es.layer_confirm_btn)
+    #     # 鑾峰彇鍒板垎浜摼鎺�
+    #     url = test_package_list.get_share_url(TestPackageList.test_package_name)
+    #     # 鎵撳紑鏂版爣绛鹃〉鍔犺浇url
+    #     test_package_list.goto_new_table(url)
+    #     # 鍒涘缓鍒嗕韩椤甸潰瀵硅薄
+    #     share_add = ShareAddPage(driver)
+    #     # 濉啓淇℃伅鎻愪氦骞惰幏鍙栨祴璇曢摼鎺�
+    #     test_url = share_add.get_test_url(data_read["edit"]["name"], data_read["edit"]["email"])
+    #     # 褰撳墠椤甸潰鎵撳紑閾炬帴
+    #     share_add.goto(test_url)
+    #     # 鍒ゆ柇鏄惁鑳藉鑾峰彇鍒版彁浜ゆ寜閽�
+    #     try:
+    #         share_add.get_ele(share_add.es.submit_btn, timeout=10)
+    #         assert False
+    #     except TimeoutException:
+    #         assert True
+    #
+    #     # 鍏抽棴褰撳墠鏍囩椤�
+    #     driver.close()
+    #     # 鍒囨崲鍒扮涓�涓爣绛鹃〉
+    #     share_add.switch_window(0)
+
+
+
+
+
+if __name__ == '__main__':
+    pytest.main(["-s", __file__])
+
+
+
+
+
+
+
+
+
+

--
Gitblit v1.9.1