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