diff options
| author | zhaokun <[email protected]> | 2024-11-28 16:50:57 +0800 |
|---|---|---|
| committer | zhaokun <[email protected]> | 2024-11-28 16:50:57 +0800 |
| commit | 83661e91f8abd64f6b0ecee8e9e69e784a72e5d8 (patch) | |
| tree | 1aa4b4365efdf9bed886056f3ba67c0941260b6b /support/ui_utils | |
| parent | 06fa53634037ae81bfb5b24e97a48697061cb083 (diff) | |
| parent | c9deae84b3d26ca19242a95d8a8c9a18974bdcc9 (diff) | |
Diffstat (limited to 'support/ui_utils')
15 files changed, 335 insertions, 127 deletions
diff --git a/support/ui_utils/element_position/map_element_position_library.py b/support/ui_utils/element_position/map_element_position_library.py index de3b70531..f5ca1d666 100644 --- a/support/ui_utils/element_position/map_element_position_library.py +++ b/support/ui_utils/element_position/map_element_position_library.py @@ -1538,7 +1538,6 @@ object_apn_object_element_position = { "objectListPage_deleteButton_warningYes_posXpath": apnObjectListPage_deleteButton_warningYes_posXpath } } - object_application_object_element_position = { "page_jump": { "mainPage_navigationBar_logo_posXpath": mainPage_navigationBar_logo_posXpath, @@ -1600,7 +1599,6 @@ object_application_object_element_position = { } } - object_application_group_object_element_position = { "page_jump": { "mainPage_navigationBar_logo_posXpath": mainPage_navigationBar_logo_posXpath, @@ -1768,7 +1766,6 @@ object_tunnel_object_element_position = { } } - object_interval_object_element_position = { "page_jump": { "mainPage_navigationBar_logo_posXpath": mainPage_navigationBar_logo_posXpath, @@ -2165,15 +2162,15 @@ log_session_log_element_position = { } -def get_profile_element_position(key_name): - if key_name == "statistics_template": - element_position_map = profile_statistics_template_element_position - elif key_name == "monitor_profile": - element_position_map = profile_monitor_profile_element_position - else: - print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), str(datetime.now().microsecond)[:3], "{} no element position map".format(key_name)) - element_position_map = {} - return element_position_map +# def get_profile_element_position(key_name): +# if key_name == "statistics_template": +# element_position_map = profile_statistics_template_element_position +# elif key_name == "monitor_profile": +# element_position_map = profile_monitor_profile_element_position +# else: +# print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), str(datetime.now().microsecond)[:3], "{} no element position map".format(key_name)) +# element_position_map = {} +# return element_position_map def get_name_list(test_data): @@ -2219,7 +2216,7 @@ def get_name_list(test_data): tmp_name_dict["name"] = value[i]["profile_file"]["name"] else: tmp_name_dict["name"] = value[i]["profile_file"]["name"] - + name_list.append(copy.deepcopy(tmp_name_dict)) #print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), str(datetime.now().microsecond)[:3], name_list) #""" @@ -2409,21 +2406,22 @@ def get_element_position(key_name): element_position_map = profile_ssl_decryption_keyring_element_position elif key_name == "ssl_decryption_profile": element_position_map = profile_ssl_decryption_profile_element_position - elif key_name == "tcp_proxy_profile": + elif key_name == "tcp_option_profile": element_position_map = profile_tcp_proxy_profile_element_position elif key_name == "traffic_mirroring_profile": element_position_map = profile_traffic_mirroring_profile_element_position - elif key_name == "hijack_file": + elif key_name == "replacement_file": element_position_map = profile_hijack_file_element_position - elif "insert_script" in key_name: - if "css" in key_name: - element_position_map = profile_insert_script_css_element_position - else: - element_position_map = profile_insert_script_js_element_position + elif key_name == "js_file": + element_position_map = profile_insert_script_js_element_position + elif key_name == "css_file": + element_position_map = profile_insert_script_css_element_position elif key_name =="statistics_template": element_position_map = profile_statistics_template_element_position elif key_name == "run_script": element_position_map = profile_run_script_element_position + elif key_name == "statistics_template": + element_position_map = profile_statistics_template_element_position # policy elif key_name == "proxy_manipulation": element_position_map = policy_manipulation_rule_element_position diff --git a/support/ui_utils/profiles/create_insert_profile.py b/support/ui_utils/profiles/create_css_file.py index 51bcefeb4..30d17600f 100644 --- a/support/ui_utils/profiles/create_insert_profile.py +++ b/support/ui_utils/profiles/create_css_file.py @@ -5,11 +5,11 @@ from selenium.webdriver.common.by import By from support.ui_utils.element_position.profile_element_position import * from datetime import datetime -class CreateInsertProfile: +class CreateCSSFile: def __init__(self, driver): self.driver = driver - def create_hijack_file(self, data): + def create_css_file(self, data): profile_name = data["name"] if "css" in data["script_type"]: temp_insertScripts_input_Name_posXpath = insertScripts_input_Name_posXpath diff --git a/support/ui_utils/profiles/create_dns_records_profile.py b/support/ui_utils/profiles/create_dns_resource_record.py index e69a3453f..684683d89 100644 --- a/support/ui_utils/profiles/create_dns_records_profile.py +++ b/support/ui_utils/profiles/create_dns_resource_record.py @@ -18,13 +18,14 @@ import copy from support.ui_utils.random_name import RandomName from datetime import datetime -class CreateDnsProfile(): - def __init__(self, driver, secy_dnsRecords_profile_element_position): +class CreateDnsResourceReccord(): + def __init__(self, driver): self.driver = driver + secy_dnsRecords_profile_element_position = {} self.page_jump_element_position = secy_dnsRecords_profile_element_position["page_jump"] self.create_element_position = secy_dnsRecords_profile_element_position["create"] - def create_dns_records_profile(self, data, secy_dnsRecords_profile_element_position,source_name): + def create_dns_resource_record(self, data, secy_dnsRecords_profile_element_position,source_name): page_jump_element_position = secy_dnsRecords_profile_element_position["page_jump"] create_element_position = secy_dnsRecords_profile_element_position["create"] try: diff --git a/support/ui_utils/profiles/create_js_file.py b/support/ui_utils/profiles/create_js_file.py new file mode 100644 index 000000000..b8021ece7 --- /dev/null +++ b/support/ui_utils/profiles/create_js_file.py @@ -0,0 +1,104 @@ +import os +import sys +import time +from selenium.webdriver.common.by import By +from support.ui_utils.element_position.profile_element_position import * +from datetime import datetime + +class CreateJSFile: + def __init__(self, driver): + self.driver = driver + + def create_js_file(self, data): + profile_name = data["name"] + if "css" in data["script_type"]: + temp_insertScripts_input_Name_posXpath = insertScripts_input_Name_posXpath + temp_insertScripts_button_oK_posXpath = insertScripts_button_oK_posXpath + else: + temp_insertScripts_input_Name_posXpath = insertScripts_js_input_Name_posXpath + temp_insertScripts_button_oK_posXpath = insertScripts_js_button_oK_posXpath + self.driver.find_element(By.XPATH, temp_insertScripts_input_Name_posXpath).clear() + self.driver.find_element(By.XPATH, temp_insertScripts_input_Name_posXpath).send_keys(profile_name) + #页面其它选项操作 + result_code = self._operate_page(data, operation_type="create") + #点击OK + self.driver.find_element(By.XPATH, temp_insertScripts_button_oK_posXpath).click() + if self.driver.is_element_exist_by_value(By.XPATH, insertScripts_button_warningSaveYes_posXpath): + self.driver.find_element(By.XPATH, insertScripts_button_warningSaveYes_posXpath).click() + + def _operate_page(self, data, operation_type="create"): + """ + 除name的其它选项操作,共创建、修改逻辑调用 + :param data: + :param operation_type: create modify。创建 修改时调用 + :return: + """ + if operation_type == "create": + data_index = 0 #新增数据索引 + else: + data_index = -1 #编辑数据索引 + no_modify = "不修改" + #script type脚本类型操作 --先操作文件类型 + + #self._operate_scriptType(data, data_index=data_index) + #File文件上传操作 + file = self._get_value_from_data(data, key="script", data_index=data_index) #解析file文件名称 + if file != no_modify: #判断修改时不修改时跳过操作。 + if file != "": + create_file = data["script"].split("->")[data_index] # 提取上传文件绝对路径 + profile_path = os.path.dirname(os.path.abspath(__file__)) # ...support\ui_utils\profile + file_abs = os.path.join(profile_path, "profile_file", "insert_scripts", create_file) + #上传文件 + if "css" in data["script_type"]: + temp_insertScripts_input_scriptUpLoad_posXpath = insertScripts_input_scriptUpLoad_posXpath + else: + temp_insertScripts_input_scriptUpLoad_posXpath = insertScripts_js_input_scriptUpLoad_posXpath + self.driver.find_element(By.XPATH, temp_insertScripts_input_scriptUpLoad_posXpath).send_keys(file_abs) + + def _operate_scriptType(self, data, data_index=0, no_modify="不修改"): + """ + 脚本类型操作,。 + :param data: + :param data_index: 0 -1来自上层 + :param no_modify:"不修改" 来自上次调用 + :param operation_type: create modify两个状态, + :return: + """ + #解析输入data数据的数据,脚本类型 + script_type = self._get_value_from_data(data, key="script_type", data_index=data_index) + if script_type != no_modify: #编辑不修改时执行 + if script_type != "": + self.driver.find_element(By.XPATH, insertScripts_input_scriptType_posXpath).click() #点击输入列表框 + if "js" == script_type: #js类型点击 + self.driver.find_element(By.XPATH, insertScripts_dropdown_jsItem_posXpath).click() + #insert position操作 + insert_position = self._get_value_from_data(data, key="insert_position", data_index=data_index) #获取insert position等操作After Page Load + if insert_position != no_modify: + self.driver.find_element(By.XPATH, insertScripts_input_insertPosition_posXpath).click() + if ("after" in insert_position) and ("page" in insert_position) and ("load" in insert_position): #点击 after Page Load选项 + #点击下拉列表选项 + self.driver.find_element(By.XPATH, insertScripts_dropdown_afterPageLoadItem_posXpath).click() + else: #点击 before Page Load选项 + self.driver.find_element(By.XPATH, insertScripts_dropdown_beforePageLoadItem_posXpath).click() + else: #css类型点击列表 + self.driver.find_element(By.XPATH, insertScripts_dropdown_cssItem_posXpath).click() + + def _get_value_from_data(self, data, key="", data_index=0): + """ + 从data数据中,根据key提取值 + :param data: + :param key: + :param data_index: 0 -1 + :return: + """ + try: + switch_value: str = data[key].split("->")[data_index].strip().lower() #用例数据 + return switch_value + except Exception as e: + print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), str(datetime.now().microsecond)[:3], f"Exception: {e}", flush=True) + raise + + + + + diff --git a/support/ui_utils/profiles/create_run_script_profile.py b/support/ui_utils/profiles/create_lua_script.py index 0e0251566..03b29c452 100644 --- a/support/ui_utils/profiles/create_run_script_profile.py +++ b/support/ui_utils/profiles/create_lua_script.py @@ -5,11 +5,11 @@ from selenium.webdriver.common.by import By from support.ui_utils.element_position.profile_element_position import * from datetime import datetime -class CreateRunScriptProfile: +class CreateLuaScript: def __init__(self, driver): self.driver = driver - def create_run_script_file(self, data): + def create_lua_script(self, data): profile_name = data["name"] self.driver.find_element(By.XPATH, tsgProxyScripts_input_Name_posXpath).clear() self.driver.find_element(By.XPATH, tsgProxyScripts_input_Name_posXpath).send_keys(profile_name) diff --git a/support/ui_utils/profiles/create_profiles.py b/support/ui_utils/profiles/create_profiles.py index ebe60d00b..1b07b7732 100644 --- a/support/ui_utils/profiles/create_profiles.py +++ b/support/ui_utils/profiles/create_profiles.py @@ -2,109 +2,144 @@ import os import sys import time from support.ui_utils.profiles.page_jump import PageJump -from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.by import By -from support.ui_utils.element_position.profile_element_position import * -import traceback -from support.ui_utils.profiles.create_statistics_template import CreateStatisticsTemplate -from support.ui_utils.element_position.map_element_position_library import get_profile_element_position -from support.ui_utils.profiles.create_hijack_profile import CreateHijackProfile -from support.ui_utils.profiles.create_insert_profile import CreateInsertProfile -from support.ui_utils.profiles.create_run_script_profile import CreateRunScriptProfile +from datetime import datetime from support.ui_utils.profiles.create_response_page import CreateResponsePage +from support.ui_utils.profiles.create_dns_resource_record import CreateDnsResourceReccord +from support.ui_utils.profiles.create_traffic_mirroring_profile import CreateMonitorProfile from support.ui_utils.profiles.create_ssl_decryption_keyring_profile import CreateSSLDecryptionKeyringProfile from support.ui_utils.profiles.create_ssl_decryption_profile import CreateSSLDecryptionProfile -from support.ui_utils.profiles.create_tcp_proxy_profile import CreateTcpProxyProfile -from support.ui_utils.profiles.create_traffic_mirroring_profile import CreateMonitorProfile -from datetime import datetime +from support.ui_utils.profiles.create_tcp_option_profile import CreateTcpOptionProfile +from support.ui_utils.profiles.create_replacement_file import CreateReplacementFile +from support.ui_utils.profiles.create_js_file import CreateJSFile +from support.ui_utils.profiles.create_css_file import CreateCSSFile +from support.ui_utils.profiles.create_lua_script import CreateLuaScript +from support.ui_utils.profiles.create_sc_profile import CreateServiceFunctionForwarderProfile +from support.ui_utils.profiles.create_statistics_template import CreateStatisticsTemplate +from support.ui_utils.profiles.elemen_position import ElementPosition class CreateProfiles: def __init__(self, driver): self.driver = driver - def create_profiles(self, policy_configuration): - profile_element_position = {} - page_jump_element_position = profile_element_position["page_jump"] - create_element_position = profile_element_position["create"] - try: - # 页面跳转 - page_jump = PageJump(self.driver) - page_jump.jump_sub_profile_page(page_jump_element_position) - # 点击create - self.driver.find_element(By.XPATH, create_element_position["profileListPage_createButton_posXpath"]).click() - if policy_configuration["profile_type"] == "response_page": # response page创建 - self._create_response_page(policy_configuration["profile_file"]) - elif policy_configuration["profile_type"] == "statistics_template": # response page创建 - self._create_statistics_template_page(policy_configuration) - elif policy_configuration["profile_type"] == "hijack_file": # hijack file 创建 - self._create_hijack_file(policy_configuration["profile_file"]) - elif policy_configuration["profile_type"] == "insert_script": # insert script 创建 - self._create_insert_script(policy_configuration["profile_file"]) - elif policy_configuration["profile_type"] == "run_script": # run script 创建 - self._create_run_script(policy_configuration["profile_file"]) - elif policy_configuration["profile_type"] == "ssl_keyring": # ssl decrpytion keyring 创建 - self._create_run_ssl_decryption_keyring(policy_configuration["profile_file"]) - elif policy_configuration["profile_type"] == "ssl_decryption": # ssl decrpytion profile 创建 - self._create_run_ssl_decryption_profile(policy_configuration["profile_file"]) - elif policy_configuration["profile_type"] == "tcp_option": # tcp proxy 创建 - self._create_run_tcp_proxy_profile(policy_configuration["profile_file"]) - elif policy_configuration["profile_type"] == "traffic_mirror": # traffic mirror 创建 - self._create_traffic_mirroring_profile(policy_configuration["profile_file"]) - # 其它 profile创建 + def create_profiles(self, parameter, policy_configuration): + result = "" + if "action_parameter" not in policy_configuration.keys(): return "" - except Exception as e: - print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), str(datetime.now().microsecond)[:3], f"Exception: {e}") - raise - - def _create_response_page(self, data): - """ - resposne page 创建函数 - """ - Pl = CreateResponsePage(self.driver) - Pl.create_response_page(data) + # 遍历创建 + profile_list = ["html_profile", "resolution", "traffic_mirroring", "keyring_for_trusted", "keyring_for_untrusted", + "decryption_profile", "tcp_option_profile", "replacement_file", "js_file", "css_file", "lua_script", + "profile_chain", "sff_profiles", "template_profile"] + policy_configuration["parameter"] = parameter + for k, v in policy_configuration["action_parameter"].items(): + if k not in profile_list: # 没有则不用执行profile + continue + profile_element_position, key_name = ElementPosition(policy_configuration).get_profile_element_position_library + if len(profile_element_position) == 0: + return "" + try: #页面Profile菜单跳转 + page_jump_element_position = profile_element_position["page_jump"] + page_jump = PageJump(self.driver) + page_jump.jump_sub_profile_page(page_jump_element_position) + except Exception as e: + print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), str(datetime.now().microsecond)[:3], "When jumping profile, the exception error: ", str(e), flush=True) + return "When jumping profile, the exception error: " + str(e) + try: #点击create button + create_element_position = profile_element_position["create"] + self.driver.find_element(By.XPATH, create_element_position["profileListPage_createButton_posXpath"]).click() + except Exception as e: + print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), str(datetime.now().microsecond)[:3], "When clicking create button, the exception error: ", str(e), flush=True) + return "When clicking create button, the exception error: " + str(e) - def _create_hijack_file(self, data): - # 新建hijack_file - Pl = CreateHijackProfile(self.driver) - Pl.create_hijack_file(data) + if key_name == "response_page": + result = self._create_response_page(policy_configuration) + elif key_name == "dns_resource_record": + result = self._create_dns_resource_record(policy_configuration) + elif key_name == "traffic_mirroring_profile": + result = self._create_traffic_mirroring_profile(policy_configuration) + elif key_name == "ssl_decryption_keyring": + result = self._create_run_ssl_decryption_keyring(policy_configuration) + elif key_name == "ssl_decryption_profile": + result = self._create_run_ssl_decryption_profile(policy_configuration) + elif key_name == "tcp_option_profile": + result = self._create_run_tcp_option_profile(policy_configuration) + elif key_name == "replacement_file": + result = self._create_replacement_file(policy_configuration) + elif key_name == "js_file": + result = self._create_js_file(policy_configuration) + elif key_name == "css_file": + result = self._create_cs_file(policy_configuration) + elif key_name == "run_script": + result = self._create_run_script(policy_configuration) + elif key_name == "shaping_profile": + result = "shaping_profile" + elif key_name == "sff_profiles": + result = self._create_sff_script(policy_configuration) + elif key_name == "statistics_template": + result = self._create_statistics_template_page(policy_configuration) + else: + result = "" + return result - def _create_insert_script(self, data): - # 新建hijack_file - Pl = CreateInsertProfile(self.driver) - Pl.create_hijack_file(data) + def _create_response_page(self, policy_configuration): + # resposne page 创建函数 + Pl = CreateResponsePage(self.driver) + return Pl.create_response_page(policy_configuration) - def _create_run_script(self, data): - # 新建 run script - Pl = CreateRunScriptProfile(self.driver) - Pl.create_run_script_file(data) + def _create_dns_resource_record(self, policy_configuration): + # dns resource record 创建函数 + Pl = CreateDnsResourceReccord(self.driver) + return Pl.create_dns_resource_record(policy_configuration) + + def _create_traffic_mirroring_profile(self, policy_configuration): + # 新建 tcp_proxy_profile + Pl = CreateMonitorProfile(self.driver) + return Pl.create_traffic_mirroring_profile(policy_configuration) - def _create_run_ssl_decryption_keyring(self, data): + def _create_run_ssl_decryption_keyring(self, policy_configuration): # 新建 ssl_decryption_keyring Pl = CreateSSLDecryptionKeyringProfile(self.driver) - Pl.create_ssl_decryption_keyring_file(data) + return Pl.create_ssl_decryption_keyring_file(policy_configuration) - def _create_run_ssl_decryption_profile(self, data): + def _create_run_ssl_decryption_profile(self, policy_configuration): # 新建 ssl_decryption_proile Pl = CreateSSLDecryptionProfile(self.driver) - Pl.create_ssl_decryption_file(data) + return Pl.create_ssl_decryption_file(policy_configuration) - def _create_run_tcp_proxy_profile(self, data): - # 新建 tcp_proxy_profile - Pl = CreateTcpProxyProfile(self.driver) - Pl.create_tcp_proxy_profile(data) + def _create_run_tcp_option_profile(self, policy_configuration): + # 新建 tcp_option_profile + Pl = CreateTcpOptionProfile(self.driver) + return Pl.create_tcp_option_profile(policy_configuration) + + def _create_replacement_file(self, policy_configuration): + # 新建replacement file + Pl = CreateReplacementFile(self.driver) + return Pl.create_Replacement_file(policy_configuration) + + def _create_js_file(self, policy_configuration): + # 新建js file + Pl = CreateJSFile(self.driver) + return Pl.create_js_file(policy_configuration) + + def _create_cs_file(self, policy_configuration): + # 新建js file + Pl = CreateCSSFile(self.driver) + return Pl.create_css_file(policy_configuration) + + def _create_run_script(self, policy_configuration): + # 新建 run script + Pl = CreateLuaScript(self.driver) + return Pl.create_lua_script(policy_configuration) + + def _create_sff_script(self, policy_configuration): + # 新建 sff + Pl = CreateServiceFunctionForwarderProfile(self.driver) + return Pl.create_sff_profile(policy_configuration) + + def _create_statistics_template_page(self, policy_configuration): + # 新建 statistics_template + Pl = CreateStatisticsTemplate(self.driver) + return Pl.create_statistics_template(policy_configuration) - def _create_traffic_mirroring_profile(self, data): - # 新建 tcp_proxy_profile - Pl = CreateMonitorProfile(self.driver) - Pl.create_traffic_mirroring_profile(data) - - def _create_statistics_template_page(self, data): - cond_code = 0 - # create_statistics_template = CreateProfile(driver) - if data != None and len(data) >= 0: - create_statistics_template = CreateStatisticsTemplate(self.driver) - element_position_map = get_profile_element_position("statistics_template") - cond_code = create_statistics_template.create(data, element_position_map) - return cond_code diff --git a/support/ui_utils/profiles/create_hijack_profile.py b/support/ui_utils/profiles/create_replacement_file.py index df5401b5b..289565b8a 100644 --- a/support/ui_utils/profiles/create_hijack_profile.py +++ b/support/ui_utils/profiles/create_replacement_file.py @@ -5,11 +5,11 @@ from selenium.webdriver.common.by import By from support.ui_utils.element_position.profile_element_position import * from datetime import datetime -class CreateHijackProfile: +class CreateReplacementFile: def __init__(self, driver): self.driver = driver - def create_hijack_file(self, data): + def create_Replacement_file(self, data): try: profile_name = data["name"] self.driver.find_element(By.XPATH, hijackFiles_input_Name_posXpath).clear() diff --git a/support/ui_utils/profiles/create_response_page.py b/support/ui_utils/profiles/create_response_page.py index 3899473b2..260954759 100644 --- a/support/ui_utils/profiles/create_response_page.py +++ b/support/ui_utils/profiles/create_response_page.py @@ -8,19 +8,19 @@ class CreateResponsePage: def __init__(self, driver): self.driver = driver - def create_response_page(self, data): + def create_response_page(self, policy_configuration): """ resposne page 创建函数 """ # 在create resposne page页面操作 - profile_name = data["name"] + data = policy_configuration["action_parameter"] + profile_name = data["html_profile"]["name"] self.driver.find_element(By.XPATH, responsePage_input_Name_posXpath).clear() self.driver.find_element(By.XPATH, responsePage_input_Name_posXpath).send_keys(profile_name) # 上传文件 - create_file = data["file"].split("->")[0] # 提取上传文件绝对路径 - profile_path = os.path.dirname(os.path.abspath(__file__)) # ...support\ui_utils\profile - file_abs = os.path.join(profile_path, "profile_file", "response_pages", create_file) - + create_file = data["html_profile"]["file_path"] # 提取上传文件绝对路径 + root_path = policy_configuration["parameter"]["root_path"]# ...support/configuration_management/profile + file_abs = os.path.join(root_path, "support" ,"configuration_management", "profile", create_file) self.driver.find_element(By.XPATH, responsePage_input_file_posXpath).send_keys(file_abs) self.driver.find_element(By.XPATH, responsePage_button_oK_posXpath).click() if self.driver.is_element_exist_by_value(By.XPATH, responsePage_button_warningSaveYes_posXpath): diff --git a/support/ui_utils/profiles/create_statistics_template.py b/support/ui_utils/profiles/create_statistics_template.py index aeb836598..6d8c3c045 100644 --- a/support/ui_utils/profiles/create_statistics_template.py +++ b/support/ui_utils/profiles/create_statistics_template.py @@ -20,7 +20,9 @@ class CreateStatisticsTemplate(): self.driver = driver self.actions = ActionChains(self.driver) - def create(self, data, template_element_position): + def create_statistics_template(self, policy_configuration): + data = policy_configuration + template_element_position = {} page_jump_element_position = template_element_position["page_jump"] create_element_position = template_element_position["create"] try: diff --git a/support/ui_utils/profiles/create_tcp_proxy_profile.py b/support/ui_utils/profiles/create_tcp_option_profile.py index a1adc408f..6b4544703 100644 --- a/support/ui_utils/profiles/create_tcp_proxy_profile.py +++ b/support/ui_utils/profiles/create_tcp_option_profile.py @@ -5,11 +5,11 @@ from selenium.webdriver.common.by import By from support.ui_utils.element_position.profile_element_position import * from datetime import datetime -class CreateTcpProxyProfile: +class CreateTcpOptionProfile: def __init__(self, driver): self.driver = driver - def create_tcp_proxy_profile(self, data): + def create_tcp_option_profile(self, data): profile_name = data["name"] self.driver.find_element(By.ID, tcpProxyProfiles_input_Name_posId).send_keys(profile_name) #页面其它选项操作 diff --git a/support/ui_utils/profiles/delete_profiles.py b/support/ui_utils/profiles/delete_profiles.py index e12ff5c2a..70dd5882f 100644 --- a/support/ui_utils/profiles/delete_profiles.py +++ b/support/ui_utils/profiles/delete_profiles.py @@ -11,7 +11,10 @@ class DeleteProfiles: def __init__(self, driver): self.driver = driver - def delete_profiles(self, profile_element_position, first_row_checkbox_element, is_del_all=False): + def delete_profiles(self, profiles_tuple): + profile_element_position = {} + first_row_checkbox_element = {} + is_del_all = False delete_element_position = profile_element_position["delete"] try: if is_del_all == True: @@ -56,7 +59,7 @@ class DeleteProfiles: return return_code except Exception as e: raise - + def delete_profiles_by_name(self, parameter, policy_configuration, headers): try: api_server = parameter["api_server"] @@ -107,7 +110,7 @@ class DeleteProfiles: except Exception as e: print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"), str(datetime.now().microsecond)[:3], "When deleting profile by name, the exception error: ", str(e), flush=True) return "When deleting profile by name, the exception error: " + str(e) - + def get_profiles_info(policy_configuration): object_info_list = [] object_info_dict = {} @@ -121,7 +124,7 @@ class DeleteProfiles: object_info_dict["name"] = or_conditions[j]["name"] object_info_list.append(object_info_dict) return object_info_list - + def combine_profiles_uuid(self, template, data_list): uuid_list = [] for _, json_obj in enumerate(data_list): diff --git a/support/ui_utils/profiles/edit_profiles.py b/support/ui_utils/profiles/edit_profiles.py index eb1dbc4e8..2e811a613 100644 --- a/support/ui_utils/profiles/edit_profiles.py +++ b/support/ui_utils/profiles/edit_profiles.py @@ -4,4 +4,8 @@ import time class EditProfiles: def __init__(self, driver): - self.driver = driver
\ No newline at end of file + self.driver = driver + + def edit_profiles(self, policy_configuration): + if "action_parameter" not in policy_configuration.keys(): + return ""
\ No newline at end of file diff --git a/support/ui_utils/profiles/elemen_position.py b/support/ui_utils/profiles/elemen_position.py new file mode 100644 index 000000000..1709d0053 --- /dev/null +++ b/support/ui_utils/profiles/elemen_position.py @@ -0,0 +1,49 @@ +# -*- coding: UTF-8 -*- +from support.ui_utils.element_position.map_element_position_library import get_element_position + + +class ElementPosition: + def __init__(self, policy_configuration): + self.policy_configuration = policy_configuration + + @property + def get_profile_element_position_library(self): + """ + 从action_parameter中提取要定位的key_name,再从map_element_position_library到入定位信息 + """ + action_parameter = self.policy_configuration["action_parameter"] + key_name = "" + if "html_profile" in action_parameter: + key_name = "response_page" + elif "resolution" in action_parameter: + # 需要处理 + key_name = "dns_resource_record" + elif "traffic_mirroring" in action_parameter: + key_name = "traffic_mirroring_profile" + elif "keyring_for_trusted" in action_parameter: + key_name = "ssl_decryption_keyring" + elif "keyring_for_untrusted" in action_parameter: + key_name = "ssl_decryption_keyring" + elif "decryption_profile" in action_parameter: + key_name = "ssl_decryption_profile" + elif "tcp_option_profile" in action_parameter: + key_name = "tcp_option_profile" + elif "replacement_file" in action_parameter: + key_name = "replacement_file" + elif "js_file" in action_parameter: + key_name = "js_file" + elif "css_file" in action_parameter: + key_name = "css_file" + elif "lua_script" in action_parameter: + key_name = "run_script" + elif "profile_chain" in action_parameter: + key_name = "shaping_profile" + elif "sff_profiles" in action_parameter: + # 需要处理 + key_name = "sff_profiles" + elif "template_profile" in action_parameter: + key_name = "statistics_template" + else: + return {}, key_name + element_position_library = get_element_position(key_name) + return element_position_library, key_name diff --git a/support/ui_utils/profiles/search_profiles.py b/support/ui_utils/profiles/search_profiles.py index 8f73005e3..b0244ff97 100644 --- a/support/ui_utils/profiles/search_profiles.py +++ b/support/ui_utils/profiles/search_profiles.py @@ -41,3 +41,6 @@ class SearchProfiles: else: return 400, "" + def get_profiles_uuid(self, policy_configuration): + if "action_parameter" not in policy_configuration.keys(): + return [], "" diff --git a/support/ui_utils/ui_client.py b/support/ui_utils/ui_client.py index d7a4e7a56..8be19e564 100644 --- a/support/ui_utils/ui_client.py +++ b/support/ui_utils/ui_client.py @@ -52,7 +52,7 @@ class UIClient: def create_profiles(self, policy_configuration): profiles = CreateProfiles(self.driver) - error = profiles.create_profiles(policy_configuration) + error = profiles.create_profiles(self.parameter, policy_configuration) return error def search_profiles(self, policy_configuration, search_type): @@ -65,6 +65,15 @@ class UIClient: profiles_tuple, error = profiles.get_profiles_uuid(policy_configuration) return profiles_tuple, error + def edit_profiles(self, policy_configuration): + profiles = EditProfiles(self.driver) + error = profiles.edit_profiles(policy_configuration) + return error + + def delete_profiles(self, profiles_tuple): + profiles = DeleteProfiles(self.driver) + profiles.delete_profiles(profiles_tuple) + def create_rules(self, policy_configuration): self.policy_configuration = policy_configuration rules = CreateRules(self.driver) |
