summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorauto_kg <[email protected]>2024-11-22 19:15:29 +0800
committerauto_kg <[email protected]>2024-11-22 19:15:29 +0800
commit005b48cd72629ea5e54ce1ae1270084e74a6d61c (patch)
tree2e7e7838c2c13edd110f2fdaa47543af723d5999
parent1302542a97eaec10e5b69d58e9d3bc4be6967c8b (diff)
hijack、tcp option 适配修改
-rw-r--r--cases/profiles/test_traffic_mirroring_profiles.py10
-rw-r--r--common/ui_common/profiles/dns_records.py61
-rw-r--r--common/ui_common/profiles/hijack_files.py287
-rw-r--r--common/ui_common/profiles/tcp_proxy_profiles.py712
4 files changed, 643 insertions, 427 deletions
diff --git a/cases/profiles/test_traffic_mirroring_profiles.py b/cases/profiles/test_traffic_mirroring_profiles.py
index b57536d8..900b7805 100644
--- a/cases/profiles/test_traffic_mirroring_profiles.py
+++ b/cases/profiles/test_traffic_mirroring_profiles.py
@@ -43,13 +43,13 @@ class TestTrafficMirroringProfiles:
trafficMirroringProfiles_name = trafficMirroringProfiles.create(data)
time.sleep(3)
trafficMirroringProfiles.query(data, require_assertion=1, Name=trafficMirroringProfiles_name)
- trafficMirroringProfiles.audit_log("Create")
- trafficMirroringProfiles_dict = trafficMirroringProfiles.query(data, require_assertion=1, Name=trafficMirroringProfiles_name)
+ # trafficMirroringProfiles.audit_log("Create")
+ # trafficMirroringProfiles_dict = trafficMirroringProfiles.query(data, require_assertion=1, Name=trafficMirroringProfiles_name)
trafficMirroringProfiles.modify(data)
time.sleep(3)
- trafficMirroringProfiles_dict2 = trafficMirroringProfiles.query(data, require_assertion=2, ID=trafficMirroringProfiles_dict["ID"])
- trafficMirroringProfiles.audit_log("Edit")
- trafficMirroringProfiles.query(data, require_assertion=2, ID=trafficMirroringProfiles_dict["ID"])
+ trafficMirroringProfiles_dict2 = trafficMirroringProfiles.query(data, require_assertion=2, Name=trafficMirroringProfiles_name)
+ # trafficMirroringProfiles.audit_log("Edit")
+ # trafficMirroringProfiles.query(data, require_assertion=2, Name=trafficMirroringProfiles_name)
# print(trafficMirroringProfiles_id, trafficMirroringProfiles_name)
trafficMirroringProfiles.delete()
diff --git a/common/ui_common/profiles/dns_records.py b/common/ui_common/profiles/dns_records.py
index 12fc328e..199613f3 100644
--- a/common/ui_common/profiles/dns_records.py
+++ b/common/ui_common/profiles/dns_records.py
@@ -420,7 +420,9 @@ class DnsRecords:
self.driver.find_element(By.XPATH, dns_records_profile_page_input_name_posxpath).send_keys(new_Name)
self.random_name = self.random_name+new_Name
#修改description内容
- self.driver.find_element(By.XPATH, dns_records_profile_page_text_area_description_posxpath).clear()
+ element = self.driver.find_element(By.XPATH, dns_records_profile_page_text_area_description_posxpath)
+ element.send_keys(Keys.CONTROL, "a")
+ element.send_keys(Keys.DELETE)
self.driver.find_element(By.XPATH, dns_records_profile_page_text_area_description_posxpath).send_keys(data["description"].split("->")[-1])
self.driver.find_element(By.XPATH, dns_records_profile_page_button_ok_posxpath).click()
# if self.driver.find_element(By.CSS_SELECTOR, dnsRecordsProfilePage_button_warningSaveYes_posCss).is_displayed():
@@ -734,16 +736,16 @@ class DnsRecords:
self.first_row_checkBox_element.click()
# 调用公共的link创建逻辑
Des_ID_list, Request_ID, Sou_ID_list = self.profiles_po.linkdata(link_list_dict,
- listPage_profile_dnsRecords_linkButton_posId,
+ listpage_profile_dns_records_link_button_posxpath,
listPage_linkTips_dnsRecords_button_save_posXpath,
listPage_linkTips_dnsRecords_button_add_posXpath,
listPage_linkTips_dnsRecords_button_OK_posXpath)
try:
- self._search(data, require_assertion=1, ID=search_dict["ID"])
+ self._search(data, require_assertion=1, Name=search_dict["Name"])
# 点击勾选第一行选择框
self.first_row_checkBox_element.click() # 变量来自查询函数
time.sleep(1)
- self.driver.find_element(By.ID, listPage_profile_dnsRecords_editButton_posId).click()
+ self.driver.find_element(By.XPATH, listpage_profile_dns_records_edit_button_posxpath).click()
self.driver.refresh()
# save data
src_val_dict = self._get_value_dict(data)
@@ -760,7 +762,7 @@ class DnsRecords:
# 点击勾选第一行选择框
self.first_row_checkBox_element.click() # 变量来自查询函数
time.sleep(1)
- self.driver.find_element(By.ID, listPage_profile_dnsRecords_editButton_posId).click()
+ self.driver.find_element(By.XPATH, listpage_profile_dns_records_edit_button_posxpath).click()
time.sleep(2)
self.driver.refresh()
des_val_dict = self._get_value_dict(data)
@@ -770,13 +772,13 @@ class DnsRecords:
# 跳转到源 cluster
self.profiles_po.change_sou_vsys()
# update data
- self._search(data, require_assertion=1, ID=search_dict["ID"])
+ self._search(data, require_assertion=1, Name=search_dict["Name"])
self._modify(data)
- self._search(data, require_assertion=0, ID=search_dict["ID"])
+ self._search(data, require_assertion=0, Name=search_dict["Name"])
# 点击勾选第一行选择框
self.first_row_checkBox_element.click() # 变量来自查询函数
time.sleep(1)
- self.driver.find_element(By.ID, listPage_profile_dnsRecords_editButton_posId).click()
+ self.driver.find_element(By.XPATH, listpage_profile_dns_records_edit_button_posxpath).click()
self.driver.refresh()
# save data
sou_value_dict = self._get_value_dict(data)
@@ -797,7 +799,6 @@ class DnsRecords:
self._just_goto_dns_record_page()
self._delete_des(Des_ID_list, data) # 删除数据
time.sleep(3)
-
# 删除policy links记录
self.profiles_po._del_policy_links(Request_ID)
# 删除源vsys数据
@@ -858,7 +859,7 @@ class DnsRecords:
# 点击勾选第一行选择框
self.first_row_checkBox_element.click() # 变量来自查询函数
time.sleep(1)
- self.driver.find_element(By.ID, listPage_profile_dnsRecords_editButton_posId).click()
+ self.driver.find_element(By.XPATH, listpage_profile_dns_records_edit_button_posxpath).click()
self.driver.refresh()
des_val_dict_two = self._get_value_dict(data)
print("des_val_dict_two ===========", des_val_dict_two)
@@ -875,43 +876,27 @@ class DnsRecords:
profile_public = ProfilesPublicOperations(self.driver)
profile_public.change_vsys(vsys_name="UIAutoTestVsys")
self._just_goto_dns_record_page()
- self._delete_source(Sou_ID_list, data) # 删除数据
+ self._delete_data(Sou_ID_list, data) # 删除数据
- def _delete_des(self, Des_ID_list, data):
- self.driver.find_element(By.ID, 'select-label').click()
- self.driver.find_element(By.XPATH,
- "//li[starts-with(@id, '1-_FilteredSearch_ElRow_')]//span[normalize-space(text())='ID']").click()
- self.driver.find_element(By.XPATH,
- '//input[contains(@placeholder, "Support")]').send_keys(Des_ID_list[0])
- self.driver.find_element(By.ID, mainPage_profileSearch_buttonSearch_posId).click()
+ def _delete_data(self, Des_ID_list, data):
+ self.driver.find_element(By.XPATH, mainpage_profile_search_select_label_posxpath).send_keys(Des_ID_list[0])
+ self.driver.find_element(By.XPATH, listpage_profile_search_dns_records_drop_down_item_posxpath.format(
+ replace_name='UUID')).click()
+ self.driver.find_element(By.XPATH, mainpage_profile_search_button_search_posxpath).click()
time.sleep(1)
self.driver.find_element(By.XPATH,
- "//div[@class='el-checkbox-group']//span[@class='el-checkbox__input']/span[@class='el-checkbox__inner']").click()
+ listpage_profile_dns_records_del_button_posxpath).click()
# 确认删除
- self.driver.find_element(By.XPATH,
- "//p[normalize-space(text())='Delete']").click()
- self.driver.find_element(By.CSS_SELECTOR,
- listPage_dialogTips_dnsRecords_button_yes_posCss).click()
+ self.driver.find_element(By.XPATH, listpage_dialogtips_dns_records_button_yes_posxpath).click()
+ # self.driver.find_element(By.CSS_SELECTOR, listPage_dialogTips_responsePages_button_yes_posCss).click()
- def _delete_source(self, Sou_ID_list, data):
- self.driver.find_element(By.ID, 'select-label').click()
- self.driver.find_element(By.XPATH,
- "//li[starts-with(@id, '1-_FilteredSearch_ElRow_')]//span[normalize-space(text())='ID']").click()
- self.driver.find_element(By.XPATH, '//input[contains(@placeholder, "Support")]').send_keys(Sou_ID_list[0])
- self.driver.find_element(By.ID, mainPage_profileSearch_buttonSearch_posId).click()
- time.sleep(1)
- self.driver.find_element(By.XPATH,
- "//div[@class='el-checkbox-group']//span[@class='el-checkbox__input']/span[@class='el-checkbox__inner']").click()
- # 确认删除
- self.driver.find_element(By.XPATH, "//p[normalize-space(text())='Delete']").click()
- self.driver.find_element(By.CSS_SELECTOR, listPage_dialogTips_dnsRecords_button_yes_posCss).click()
@screenshot_on_failure
def _just_goto_dns_record_page(self, vsys_name_2=""):
# 菜单操作,定位到ssl_decryption_keyrings列表页
- # self.driver.find_element(By.CSS_SELECTOR, mainPage_navigationBar_logo_posCss).click()
- self.driver.find_element(By.ID, mainPage_firstLevelMenu_profiles_posId).click()
- element = self.driver.find_element(By.ID, mainPage_secondLevelMenu_dnsRecords_posId)
+ self.driver.find_element(By.XPATH, mainpage_navigation_bar_logo_posxpath).click()
+ self.driver.find_element(By.XPATH, mainpage_first_level_menu_profiles_posxpath).click()
+ element = self.driver.find_element(By.XPATH, mainpage_second_level_menu_dns_records_posxpath)
self.driver.execute_script("arguments[0].click()", element) # 强制点击
@screenshot_on_failure
diff --git a/common/ui_common/profiles/hijack_files.py b/common/ui_common/profiles/hijack_files.py
index c93129d7..172c1458 100644
--- a/common/ui_common/profiles/hijack_files.py
+++ b/common/ui_common/profiles/hijack_files.py
@@ -1,5 +1,6 @@
# -*- coding: UTF-8 -*-
import time
+import datetime
from selenium.common.exceptions import NoSuchElementException
from common.driver_common.mywebdriver import MyWebDriver
from selenium.webdriver.common.by import By
@@ -26,6 +27,7 @@ class HijackFiles:
self.driver = demo_fixture
# 调用profiles公共方法操作、删除、查询,
self.profiles_po = ProfilesPublicOperations(self.driver)
+ self.config_parser = configparser.ConfigParser()
try:
if self.driver.element_isExist(By.XPATH, '//*[@class="iconfont icon-Delete_X"]'):
element = self.driver.find_element(By.XPATH, '//*[@class="iconfont icon-Delete_X"]')
@@ -33,28 +35,29 @@ class HijackFiles:
except NoSuchElementException:
pass
- def hijackFiles_case(self, data: {}):
+ def hijack_files_case(self, data: {}):
self._create(data) #创建
time.sleep(3)
self._query(data, require_assertion=1, Name=self.random_name) #创建后查询
if data["model"].strip().lower() == "modify": #修改测试时,执行修改方法
self._modify(data)
time.sleep(2)
- self._query(data, require_assertion=2, ID=self.first_row_ID_content)
+ self._query(data, require_assertion=2, Name=self.random_name)
self._del()
@screenshot_on_failure
def _goto_subProfilePage(self, vsys_name_2=""):
# 菜单操作,定位到ssl_decryption_keyrings列表页
- # self.driver.find_element(By.CSS_SELECTOR, mainPage_navigationBar_logo_posCss).click()
+ self.driver.find_element(By.XPATH, mainpage_navigation_bar_logo_posxpath).click()
self.profiles_po.change_vsys(vsys_name=vsys_name_2)
- self.driver.find_element(By.ID, mainPage_firstLevelMenu_profiles_posId).click()
- self.driver.find_element(By.ID, mainPage_secondLevelMenu_hijackFiles_posId).click()
+ self.driver.find_element(By.XPATH, mainpage_first_level_menu_profiles_posxpath).click()
+ element = self.driver.find_element(By.XPATH, mainpage_second_level_menu_hijack_files_posxpath)
+ self.driver.execute_script("arguments[0].click()", element)
@screenshot_on_failure
def _just_goto_hijack_page(self, vsys_name_2=""):
# 菜单操作,定位到ssl_decryption_keyrings列表页
- # self.driver.find_element(By.CSS_SELECTOR, mainPage_navigationBar_logo_posCss).click()
+ # self.driver.find_element(By.CSS_SELECTOR, mainpage_navigation_bar_logo_posxpath).click()
self.driver.find_element(By.ID, mainPage_firstLevelMenu_profiles_posId).click()
self.driver.find_element(By.ID, mainPage_secondLevelMenu_hijackFiles_posId).click()
@@ -68,20 +71,20 @@ class HijackFiles:
self._goto_subProfilePage()
#创建
#点击create
- self.driver.find_element(By.ID, listPage_profile_hijackFiles_createButton_posId).click()
+ self.driver.find_element(By.XPATH, listpage_profile_hijack_files_create_button_posxpath).click()
#在打开页面操作:输入name
# Name
if source_name:
self.random_name = source_name[0]
- self.driver.find_element(By.ID, hijackFiles_input_Name_posId).send_keys(self.random_name)
+ self.driver.find_element(By.XPATH, hijack_files_input_name_posxpath).send_keys(self.random_name)
else:
self.random_name = self.my_random.random_name()
- self.driver.find_element(By.ID, hijackFiles_input_Name_posId).send_keys(self.random_name)
+ self.driver.find_element(By.XPATH, hijack_files_input_name_posxpath).send_keys(self.random_name)
self.driver.find_element(By.XPATH, "//label[text()='Name']").click()
#页面其它选项操作
self._operate_page(data, operation_type="create")
#点击OK
- self.driver.find_element(By.CSS_SELECTOR, hijackFiles_button_oK_posCss).click()
+ self.driver.find_element(By.XPATH, hijack_files_button_ok_posxpath).click()
if len(self.random_name) < 4: # name不符合要求
if self.driver.element_isExist(By.XPATH,
"//label[text()='Name']/parent::div//div[@class='el-form-item__error']"):
@@ -93,7 +96,7 @@ class HijackFiles:
else:
print("name less than 4,no error message")
# 点击取消
- self.driver.find_element(By.CSS_SELECTOR, hijackFiles_button_cancel_posCss).click()
+ self.driver.find_element(By.CSS_SELECTOR, hijack_files_button_cancel_posxpath).click()
if self.driver.find_element(By.CSS_SELECTOR, hijackFiles_button_warningSaveYes_posCss).is_displayed():
self.driver.find_element(By.CSS_SELECTOR, hijackFiles_button_warningSaveYes_posCss).click()
elif data["file"].split("->")[0].strip() == "" or "Exceed20MFile" in data["file"].split("->")[0].strip(): #未上传文件/超过20M
@@ -103,7 +106,7 @@ class HijackFiles:
pytest_check.equal(self.exceed20M, "File size upload limit is 20MB",
msg="所在行数{}".format(inspect.currentframe().f_lineno))
# 点击取消
- self.driver.find_element(By.CSS_SELECTOR, hijackFiles_button_cancel_posCss).click()
+ self.driver.find_element(By.CSS_SELECTOR, hijack_files_button_cancel_posxpath).click()
if self.driver.find_element(By.CSS_SELECTOR, hijackFiles_button_warningSaveYes_posCss).is_displayed():
self.driver.find_element(By.CSS_SELECTOR, hijackFiles_button_warningSaveYes_posCss).click()
elif data["file_type"].split("->")[0].strip() == "": #未选择文件类型
@@ -111,7 +114,7 @@ class HijackFiles:
pytest_check.equal(error_content, "Please enter the content",
msg="所在行数{}".format(inspect.currentframe().f_lineno))
# 点击取消
- self.driver.find_element(By.CSS_SELECTOR, hijackFiles_button_cancel_posCss).click()
+ self.driver.find_element(By.CSS_SELECTOR, hijack_files_button_cancel_posxpath).click()
if self.driver.find_element(By.CSS_SELECTOR, hijackFiles_button_warningSaveYes_posCss).is_displayed():
self.driver.find_element(By.CSS_SELECTOR, hijackFiles_button_warningSaveYes_posCss).click()
elif self.driver.element_isExist(By.CSS_SELECTOR, hijackFiles_button_warningSaveYes_posCss):
@@ -121,7 +124,7 @@ class HijackFiles:
pytest_check.equal(error_content, "Download Name should contain 1 to 128 characters.",
msg="所在行数{}".format(inspect.currentframe().f_lineno))
# 点击取消
- self.driver.find_element(By.CSS_SELECTOR, hijackFiles_button_cancel_posCss).click()
+ self.driver.find_element(By.CSS_SELECTOR, hijack_files_button_cancel_posxpath).click()
if self.driver.find_element(By.CSS_SELECTOR, hijackFiles_button_warningSaveYes_posCss).is_displayed():
self.driver.find_element(By.CSS_SELECTOR, hijackFiles_button_warningSaveYes_posCss).click()
elif data["file"].split("->")[0].split(".")[-1] not in data["file_type"].split("->")[0]: # file和file_type不匹配
@@ -129,8 +132,9 @@ class HijackFiles:
print(data["file"].split("->")[0].split(".")[-1])
print(data["file_type"].split("->")[0])
info_except = "INVALID REQUEST:Type and File are not matched."
- error_content = self.driver.find_element(By.XPATH, "//p[@class='el-message__content']").text.strip()
- pytest_check.equal(info_except, error_content, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ if self.driver.isElementExist("//p[@class='el-message__content']"):
+ error_content = self.driver.find_element(By.XPATH, "//p[@class='el-message__content']").text.strip()
+ pytest_check.equal(info_except, error_content, msg="所在行数{}".format(inspect.currentframe().f_lineno))
return 999
return self.random_name
@@ -155,23 +159,23 @@ class HijackFiles:
if file != "":
file_abspath = self._abs_path(file)
#上传文件
- self.driver.find_element(By.XPATH, hijackFiles_input_fileUpLoad_posXpath).send_keys(file_abspath)
+ self.driver.find_element(By.XPATH, hijack_files_input_file_upload_posxpath).send_keys(file_abspath)
#判断文件大小是否超出20M
if file == "exceed20mfile.html":
self.exceed20M = self.driver.find_element(By.XPATH, "//p[@class='el-message__content']").text.strip()
pytest_check.equal(self.exceed20M, "File size upload limit is 20MB", msg="所在行数{}".format(inspect.currentframe().f_lineno))
#download name 下载文件名称操作
- self._operate_switch(data, data_index=data_index, no_modify=no_modify, switch_name="download_name", element_position=hijackFiles_switch_downLoadName_posXpath)
+ self._operate_switch(data, data_index=data_index, no_modify=no_modify, switch_name="download_name", element_position=hijack_files_switch_download_name_posxpath)
#file type 文件类型操作
file_type = self._get_value_from_data(data, key="file_type", data_index=data_index)
if file_type != no_modify and file_type: #修改时不用修改数据直接跳过
#点击type添加按钮
- self.driver.find_element(By.XPATH, hijackFiles_button_fileType_posXpath).click()
+ self.driver.find_element(By.XPATH, hijack_files_button_file_type_posxpath).click()
element_type_replace_name = {'gif': 'image/gif', 'jpeg': 'image/jpeg', 'png': 'image/png', 'svg+xml': 'image/svg+xml',
'exe': 'application/x-msdos-program', 'apk': 'application/vnd.android.package-archive', 'html': 'text/html'}
if file_type not in element_type_replace_name.keys():
raise f"文件类型错误。用例数据类型为:{file_type}, 可选择文件类型为:{list(element_type_replace_name.keys())}"
- element_tablist_type = self.driver.find_element(By.XPATH, hijackFiles_tablist_fileType_posXpath.format(replaceName=element_type_replace_name[file_type]))
+ element_tablist_type = self.driver.find_element(By.XPATH, hijack_files_tablist_file_type_posXpath.format(replace_name=element_type_replace_name[file_type]))
self.driver.execute_script("arguments[0].click()", element_tablist_type) # 强制点击
def _abs_path(self, file_name):
@@ -216,19 +220,19 @@ class HijackFiles:
switch_value: str = self._get_value_from_data(data, key=switch_name, data_index=data_index) #提取数据 Mirror Server Response
if switch_value != no_modify: #编辑时,有不修改则不用执行
#先获取当前页面中开关状态 include_root_current_class : class="el-switch is-checked" 有is-checked当前状态为开,没有is-chedked当前状态为关
- swith_current_class = self.driver.find_element(By.XPATH, element_position).get_attribute("class")
+ swith_current_class = self.driver.find_element(By.XPATH, f"{element_position}/span[contains(@class, 'MuiButtonBase-root')]").get_attribute("class")
if ("mirror" in switch_value) and ("server" in switch_value) and ("response" in switch_value): #数据中为Mirror Server Response,使用默认名称,不修改; on时需要打开这个开关
- if "is-checked" in swith_current_class: #页面当前为开,不用点击开关
+ if "Mui-checked" in swith_current_class: #页面当前为开,不用点击开关
pass
else: #页面当前为关,需要点击开关
- self.driver.find_element(By.XPATH, f"{element_position}/span[2]").click()
+ self.driver.find_element(By.XPATH, f"{element_position}//input").click()
else: ##数据中为其它名称,则需要修改默认名称
- if "is-checked" in swith_current_class: #页面当前为开,需要先关闭开关,在输入值
- self.driver.find_element(By.XPATH, f"{element_position}/span[2]").click()
+ if "Mui-checked" in swith_current_class: #页面当前为开,需要先关闭开关,在输入值
+ self.driver.find_element(By.XPATH, f"{element_position}//input").click()
#输入修改名称值
- self.driver.find_element(By.XPATH, hijackFiles_input_downLoadName_posXpath).clear()
- self.driver.find_element(By.XPATH, hijackFiles_input_downLoadName_posXpath).send_keys(switch_value)
-
+ self.driver.find_element(By.XPATH, hijack_files_input_download_name_posxpath).send_keys(Keys.CONTROL + "a")
+ self.driver.find_element(By.XPATH, hijack_files_input_download_name_posxpath).send_keys(Keys.DELETE)
+ self.driver.find_element(By.XPATH, hijack_files_input_download_name_posxpath).send_keys(switch_value)
@screenshot_on_failure
def _query(self, data: {}, vsys_name_2="", require_assertion=0, **kwargs):
@@ -241,46 +245,48 @@ class HijackFiles:
#打开该列表
self._goto_subProfilePage(vsys_name_2=vsys_name_2)
#first_row查询到的第一行内容。map_header_className为需要使用的到字典,用来提取第一行的结果。
- result = self.profiles_po.query(listPage_profileSearch_hijackFiles_selectLabel_posId, listPage_profileSearch_hijackFiles_dropDown_item_posXpath,
- listPage_profileSearch_hijackFiles_input_itemContent_posXpath, listPage_profileSearch_hijackFiles_buttonSearch_posId,
- listPage_profilTable_hijackFiles_tableTbody_posXpath, listPage_profilTable_hijackFiles_tableHeader_posXpath, **kwargs)
+ result = self.profiles_po.query(listpage_profile_search_hijack_files_select_label_posxpath, listpage_profile_search_hijack_files_drop_down_item_posxpath,
+ listpage_profile_search_hijack_files_input_item_content_posxpath, listpage_profile_search_hijack_files_button_search_posxpath,
+ listpage_profile_table_hijack_files_table_tbody_posxpath, listpage_profile_table_hijack_files_table_header_posxpath, **kwargs)
if result == [0, 0]:
return 0
else:
first_row, map_header_className = result
#第一行的勾选定位,给修改、删除使用
- self.first_row_checkBox_element = first_row.find_element(By.XPATH, "//span[@class='el-checkbox__input']")
- self.first_row_ID_content = first_row.find_element(By.XPATH, "//div[@class='table-status-item-id']/span").text.strip()
+ self.first_row_checkbox_element = self.driver.find_element(By.XPATH,
+ "//div[contains(@class, 'MuiDataGrid-row--firstVisible')]//input[@class='PrivateSwitchBase-input css-1m9pwf3']")
+ # self.first_row_ID_content = first_row.find_element(By.XPATH, "//div[@class='table-status-item-id']/span").text.strip()
#print(map_header_className)
# 需要提取ID Name、Type 信息
- first_row_id_content = first_row.find_element(By.XPATH, "//div[@class='table-status-item-id']//span").text.strip()
+ # first_row_id_content = first_row.find_element(By.XPATH, "//div[@class='table-status-item-id']//span").text.strip()
#first_row_VsysID_class = map_header_className["Vsys ID"]
#first_row_VsysID_content = first_row.find_element(By.XPATH, f"//td[contains(@class, '{first_row_VsysID_class}')]//div").text.strip()
- first_row_Name_class = map_header_className["Name"]
- first_row_Name_content = first_row.find_element(By.XPATH, f"//td[contains(@class, '{first_row_Name_class}')]//span").text.strip()
- first_row_Type_class = map_header_className["Type"]
- first_row_Type_content = first_row.find_element(By.XPATH, f"//td[contains(@class, '{first_row_Type_class}')]//span").text
+ # first_row_Name_class = map_header_className["Name"]
+ first_row_name_content = self.driver.find_element(By.XPATH,
+ f"//div[contains(@class, 'MuiDataGrid-row--firstVisible')]//div[@data-field='name']").text.strip()
+ # first_row_Type_class = map_header_className["Type"]
+ first_row_type_content = self.driver.find_element(By.XPATH, f"//div[contains(@class, 'MuiDataGrid-row--firstVisible')]//div[@data-field='content_type']").text
# print(first_row_id_content, first_row_Name_content, first_row_Type_content)
- search_dict = {"ID": first_row_id_content, "Name": first_row_Name_content, "Type": first_row_Type_content}
+ search_dict = {"Name": first_row_name_content, "Type": first_row_type_content}
print("first_row=", search_dict)
element_type_replace_name = {'gif': 'image/gif', 'jpeg': 'image/jpeg', 'png': 'image/png', 'svg+xml': 'image/svg+xml',
'exe': 'application/x-msdos-program', 'apk': 'application/vnd.android.package-archive', 'html': 'text/html'}
#不同操作后的断言,创建后、修改后、无断言
if require_assertion == 1: #直接创建后,使用的断言
- pytest_check.equal(first_row_Name_content, self.random_name, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ pytest_check.equal(first_row_name_content, self.random_name, msg="所在行数{}".format(inspect.currentframe().f_lineno))
file_type = self._get_value_from_data(data, key="file_type", data_index=0)
- pytest_check.equal(first_row_Type_content, element_type_replace_name[file_type], msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ pytest_check.equal(first_row_type_content, element_type_replace_name[file_type], msg="所在行数{}".format(inspect.currentframe().f_lineno))
elif require_assertion == 2 and data["model"].strip().lower() == "modify": #修改数据后,使用的断言
- pytest_check.equal(first_row_Name_content, self.random_name, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ pytest_check.equal(first_row_name_content, self.random_name, msg="所在行数{}".format(inspect.currentframe().f_lineno))
file_type = self._get_value_from_data(data, key="file_type", data_index=-1)
if file_type != "不修改":
- pytest_check.equal(first_row_Type_content, element_type_replace_name[file_type], msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ pytest_check.equal(first_row_type_content, element_type_replace_name[file_type], msg="所在行数{}".format(inspect.currentframe().f_lineno))
else: #不适用断言
pass
#强制点击清空查询按钮
- element_clear = self.driver.find_element(By.ID, listPage_profileSearch_hijackFiles_buttonClear_posId)
- self.driver.execute_script("arguments[0].click()", element_clear) # 强制点击
+ # element_clear = self.driver.find_element(By.ID, listPage_profileSearch_hijackFiles_buttonClear_posId)
+ # self.driver.execute_script("arguments[0].click()", element_clear) # 强制点击
return search_dict
@screenshot_on_failure
@@ -293,18 +299,18 @@ class HijackFiles:
if data["model"].strip().lower() == "create": #如果是create参数用例,则不用执行修改方法
return 0
#点击勾选第一行选择框
- self.first_row_checkBox_element.click() #变量来自查询函数
- self.driver.find_element(By.ID, listPage_profile_hijackFiles_editButton_posId).click()
+ self.first_row_checkbox_element.click() #变量来自查询函数
+ self.driver.find_element(By.XPATH, listpage_profile_hijack_files_edit_button_posxpath).click()
#解析修改数据
self._operate_page(data, operation_type="edit")
# 修改name
new_Name = "(修改后)"
- self.driver.find_element(By.ID, hijackFiles_input_Name_posId).send_keys(new_Name)
+ self.driver.find_element(By.XPATH, hijack_files_input_name_posxpath).send_keys(new_Name)
self.random_name = self.random_name + new_Name
#点击ok
- self.driver.find_element(By.CSS_SELECTOR, hijackFiles_button_oK_posCss).click()
- if self.driver.find_element(By.CSS_SELECTOR, hijackFiles_button_warningSaveYes_posCss).is_displayed():
- self.driver.find_element(By.CSS_SELECTOR, hijackFiles_button_warningSaveYes_posCss).click()
+ self.driver.find_element(By.XPATH, hijack_files_button_ok_posxpath).click()
+ # if self.driver.find_element(By.CSS_SELECTOR, hijackFiles_button_warningSaveYes_posCss).is_displayed():
+ # self.driver.find_element(By.CSS_SELECTOR, hijackFiles_button_warningSaveYes_posCss).click()
@screenshot_on_failure
def _del(self, del_model=0):
@@ -315,9 +321,9 @@ class HijackFiles:
#点击勾选第一行选择框
if del_model == 0:
#点击勾选第一行选择框
- self.first_row_checkBox_element.click() #变量来自查询函数
+ self.first_row_checkbox_element.click() #变量来自查询函数
elif del_model == 1: # 勾选可以删除的选项,并删除;没有锁、没有被引用的对象
- rows = self.driver.find_element(By.XPATH, listPage_profilTable_dnsRecords_tableTbody_posXpath).find_elements(By.XPATH, "./tr")
+ rows = self.driver.find_element(By.XPATH, listpage_profile_table_hijack_files_table_tbody_posxpath).find_elements(By.XPATH, "./tr")
if len(rows) == 0: # 没有数据,直接返回
return
else:
@@ -325,8 +331,8 @@ class HijackFiles:
if del_result == 1: # 1表示没有删除对象,直接返回
return 0
#调用profiles的功能删除方法
- self.profiles_po.delete(listPage_profile_hijackFiles_delButton_posId, listPage_dialogTips_hijackFiles_button_yes_posCss,
- listPage_dialogTips_hijackFiles_button_no_posCss)
+ self.profiles_po.delete(listpage_profile_hijack_files_del_button_posxpath, listpage_dialogtips_hijack_files_button_yes_posxpath,
+ listpage_dialogtips_hijack_files_button_no_posxpath)
def _column_setting(self, column: (), column_flags=0):
"""
@@ -589,18 +595,19 @@ class HijackFiles:
:param link_list_dict:
:return:
"""
+
+ # create
+ tmp_name = self._create(data)
+ time.sleep(3)
+ search_dict = self._query(data, require_assertion=0, Name=tmp_name)
+ # 勾选第一行
+ self.first_row_checkBox_element.click()
+ # 调用公共的 link 创建逻辑
+ Des_ID_list, Request_ID, Sou_ID_list = self.profiles_po.linkdata(link_list_dict, listPage_profile_hijackFiles_linkButton_posId,
+ listPage_linkTips_hijackFiles_button_save_posXpath,
+ listPage_linkTips_hijackFiles_button_add_posXpath,
+ listPage_linkTips_hijackFiles_button_OK_posXpath)
try:
- # create
- tmp_name = self._create(data)
- time.sleep(3)
- search_dict = self._query(data, require_assertion=0, Name=tmp_name)
- # 勾选第一行
- self.first_row_checkBox_element.click()
- # 调用公共的 link 创建逻辑
- Des_ID_list, Request_ID, Sou_ID_list = self.profiles_po.linkdata(link_list_dict, listPage_profile_hijackFiles_linkButton_posId,
- listPage_linkTips_hijackFiles_button_save_posXpath,
- listPage_linkTips_hijackFiles_button_add_posXpath,
- listPage_linkTips_hijackFiles_button_OK_posXpath)
# judge link success
chk_lnk_name, chk_lnk_type = [], []
self._query(data, require_assertion=1, ID=search_dict['ID'])
@@ -609,7 +616,8 @@ class HijackFiles:
sou_value_type = self.driver.find_element(By.XPATH,"//span[@class='table-hide']/span[@class='el-tooltip item']").text
chk_lnk_type.append(sou_value_type)
self.driver.find_element(By.XPATH, f"//i[contains(@id, 'dowmloadi{search_dict['ID']}')]").click()
-
+ is_exist = self.driver.element_isExist(By.XPATH, "//div[contains(@class, 'el-message--error')]/p")
+ pytest_check.equal(is_exist, False, msg="所在行数{}".format(inspect.currentframe().f_lineno))
# 切换 vsys
loginout = LogInOut(self.driver)
loginout.logout()
@@ -623,6 +631,8 @@ class HijackFiles:
self._query(data, vsys_name_2=link_list_dict[link_index]["link_dst_vsys"], require_assertion=0, ID=Des_ID_list[0])
# 点击文件下载
self.driver.find_element(By.XPATH, f"//i[contains(@id, 'dowmloadi{Des_ID_list[0]}')]").click()
+ is_exist = self.driver.element_isExist(By.XPATH, "//div[contains(@class, 'el-message--error')]/p")
+ pytest_check.equal(is_exist, False, msg="所在行数{}".format(inspect.currentframe().f_lineno))
time.sleep(2)
# 获取Link后的值
des_value_Name = self.driver.find_element(By.XPATH,
@@ -644,6 +654,8 @@ class HijackFiles:
sou_value_name = self.driver.find_element(By.XPATH, "//div[@class='cell']//span[contains(@class,'el-tooltip white-space')]").text
sou_value_type = self.driver.find_element(By.XPATH,"//span[@class='table-hide']/span[@class='el-tooltip item']").text
self.driver.find_element(By.XPATH, f"//i[contains(@id, 'dowmloadi{search_dict['ID']}')]").click()
+ is_exist = self.driver.element_isExist(By.XPATH, "//div[contains(@class, 'el-message--error')]/p")
+ pytest_check.equal(is_exist, False, msg="所在行数{}".format(inspect.currentframe().f_lineno))
time.sleep(1)
# click sync
Request_ID = self.profiles_po.click_pol_lnk_sync(Request_ID)
@@ -660,7 +672,8 @@ class HijackFiles:
print(compare_list_type)
self.profiles_po.lst_are_same(compare_list_type)
except Exception as e:
- assert e
+ print("Exception ============", e)
+ raise e
finally:
self._just_goto_hijack_page()
self._delete_des(Des_ID_list, data) # 删除数据
@@ -721,7 +734,8 @@ class HijackFiles:
self._query(data, vsys_name_2=link_list_dict[link_index]["link_dst_vsys"], require_assertion=0, ID=Des_ID_list[0])
# 点击文件下载
self.driver.find_element(By.XPATH, f"//i[contains(@id, 'dowmloadi{Des_ID_list[0]}')]").click()
-
+ is_exist = self.driver.element_isExist(By.XPATH, "//div[contains(@class, 'el-message--error')]/p")
+ pytest_check.equal(is_exist, False, msg="所在行数{}".format(inspect.currentframe().f_lineno))
time.sleep(2)
# 获取sync后的值
des_value_Name = self.driver.find_element(By.XPATH,
@@ -751,19 +765,19 @@ class HijackFiles:
profile_public = ProfilesPublicOperations(self.driver)
profile_public.change_vsys(vsys_name=link_list_dict[link_index]["link_dst_vsys"])
self._query(data, vsys_name_2=link_list_dict[link_index]["link_dst_vsys"], require_assertion=0, ID=Des_ID_list[0])
-
time.sleep(2)
# 再次获取sync后的值
# 点击文件下载
self.driver.find_element(By.XPATH, f"//i[contains(@id, 'dowmloadi{Des_ID_list[0]}')]").click()
+ is_exist = self.driver.element_isExist(By.XPATH, "//div[contains(@class, 'el-message--error')]/p")
+ pytest_check.equal(is_exist, False, msg="所在行数{}".format(inspect.currentframe().f_lineno))
second_des_value_name = self.driver.find_element(By.XPATH,
- "//div[@class='cell']//span[contains(@class,'el-tooltip white-space')]").text
+ "//div[@class='cell']//span[contains(@class,'el-tooltip white-space')]").text
compare_list_name.append(second_des_value_name)
second_des_value_type = self.driver.find_element(By.XPATH,
"//span[@class='table-hide']/span[@class='el-tooltip item']").text
compare_list_type.append(second_des_value_type)
time.sleep(3)
-
return Request_ID, compare_list_name, compare_list_type
def _delete_des(self, Des_ID_list, data):
@@ -826,19 +840,122 @@ class HijackFiles:
element_clear = self.driver.find_element(By.ID, listPage_profileSearch_hijackFiles_buttonClear_posId)
self.driver.execute_script("arguments[0].click()", element_clear) # 强制点击
+
def _audit_log_all_operation(self, data):
ran_name = self._create(data)
try:
- time.sleep(0.5)
- search_dict = self._query(data, Name=ran_name)
+ profiles_type = 'Hijack File'
+ search_name = self._query(data, Name=ran_name)
+ self._audit_log_operation(profiles_type, search_name, operation_type='Create')
+ self._query(data, Name=ran_name)
+ self._audit_log_operation(profiles_type, search_name, operation_type='Query Verbose')
+ self._query(data, Name=ran_name)
self._modify(data)
- time.sleep(0.5)
+ self._query(data, Name=ran_name)
+ self._audit_log_operation(profiles_type, search_name, operation_type='Edit')
+ self._goto_subProfilePage()
+ self.profiles_po._audit_log_query_list(profiles_type, search_name, operation_type='Query List')
+ except Exception as e:
+ raise e
+ finally:
+ self._query(data, Name=ran_name)
+ self._del()
+ self.profiles_po._audit_log_delete(profiles_type, search_name, operation_type='Delete')
+
+ def _audit_log_operation(self, profiles_type, search_name, operation_type):
+ # 选中第一行
+ self.first_row_checkbox_element.click()
+ # 点击编辑
+ self.driver.find_element(By.XPATH, listpage_profile_hijack_files_edit_button_posxpath).click()
+ if operation_type == 'Query Verbose':
+ click_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
+ if operation_type == 'Create':
+ # 创建时间
+ compare_time = self.driver.find_element(By.XPATH, hijack_files_profile_page_create_time_posxpath).text
+ elif operation_type == 'Edit':
+ # 修改时间
+ compare_time = self.driver.find_element(By.XPATH, hijack_files_profile_page_modify_time_posxpath).text
+ # 用户
+ user_name = self.driver.find_element(By.XPATH,
+ "//div[@class='bifang-proxy-id item-content user_name_font']").text
+
+ if operation_type == 'Query Verbose':
+ self.profiles_po.search_compare_item(profiles_type, search_id, operation_type=operation_type,
+ operation_flag=0)
+ else:
+ # 对比 Audit log 详情页
+ # self.driver.find_element(By.XPATH, hijack_files_profile_page_audit_logs_posxpath).click()
+ # self.driver.find_element(By.XPATH, "(//span[@class='el-checkbox__inner'])[2]").click()
+ # # 点击 Compare
+ # self.driver.find_element(By.XPATH, hijack_files_profile_page_audit_logs_compare_posxpath).click()
+ #
+ # if operation_type == 'Create':
+ # self.profiles_po._check_audit_log_detail_page(profiles_type, user_name, search_id, compare_time,
+ # operation_flag=0)
+ # elif operation_type == 'Edit':
+ # self.profiles_po._check_audit_log_detail_page(profiles_type, user_name, search_id, compare_time,
+ # operation_flag=1)
+ # 对比系统 audit_log 页
+ self.profiles_po.search_compare_item(profiles_type, search_id, operation_type=operation_type,
+ operation_flag=0)
+ time.sleep(1)
+
+ if operation_type == 'Create':
+ # 点击 Compare 对比
+ self.driver.find_element(By.XPATH,
+ "//button[@class='el-button btn-style el-button--info el-button--mini']/span[normalize-space(text())='Compare']").click()
+ self.driver.find_element(By.ID, list_page_audit_log_search_button_compare_posId).click()
+
+ self.profiles_po._check_audit_log_detail_page(profiles_type, user_name, search_id, compare_time,
+ operation_flag=0)
+ elif operation_type == 'Edit':
+ # 点击 Compare 对比
+ self.driver.find_element(By.XPATH,
+ "//button[@class='el-button btn-style el-button--info el-button--mini']/span[normalize-space(text())='Compare']").click()
+ # 对比 V.1
+ self.driver.find_element(By.XPATH,
+ "(//td[contains(@class, 'is-left el-table-column--selection')])[last()]").click()
+ self.driver.find_element(By.ID, list_page_audit_log_search_button_compare_posId).click()
+ self.profiles_po._check_audit_log_system_page(profiles_type, user_name, search_id, compare_time,
+ operation_flag=1)
+ elif operation_type == 'Query Verbose':
+ # 点击 Compare 对比
+ time.sleep(1)
+ self.driver.find_element(By.XPATH,
+ "(//button[@class='el-button btn-style el-button--info el-button--mini'])[1]").click()
+ self.profiles_po._check_audit_log_detail_page(profiles_type, user_name, search_id, click_time,
+ operation_flag=2)
+
+ def _all_search_fields(self, data):
+ # 新建数据
+ ran_name = self._create(data)
+ # 名字查询
+ search_dict = self._query(data, Name=ran_name)
+ try:
+ # ID 唯一查询
+ self._query(data, ID=search_dict['ID'])
+ # 只有一行记录并且ID一致
+ id_eles = self.driver.find_elements(By.XPATH, "//div[@class='table-status-item-id']")
+ id_ele_lst = [e.text for e in id_eles]
+ pytest_check.equal(len(id_ele_lst), 1, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ for id_ele in id_ele_lst:
+ pytest_check.equal(id_ele, search_dict['ID'], msg="所在行数{}".format(inspect.currentframe().f_lineno))
+
+ # 名字模糊查询
+ search_name = self.profiles_po.random_substring(ran_name)
+ self._query(data, Name=search_name)
+ # 可以有多行记录都需要包含在名字里面
+ name_eles = self.driver.find_elements(By.XPATH, "//td[contains(@class,'el-table_1_column_2 is-left')]")
+ name_ele_lst = [e.text for e in name_eles]
+ for name_ele in name_ele_lst:
+ pytest_check.equal(search_name in name_ele, True, msg="所在行数{}".format(inspect.currentframe().f_lineno))
except Exception as e:
+ print("Exception ============", e)
raise e
finally:
+ # 删除数据
self._query(data, Name=ran_name)
self._del()
- self.profiles_po.audit_log_view("Hijack File", search_dict["ID"])
create = _create
query = _query
@@ -864,9 +981,9 @@ if __name__ == '__main__':
)
a.get("http://192.168.44.72")
a.maximize_window()
- a.find_element(By.XPATH,"//*[@id='app']/div/div[1]/div[2]/div[2]/div[1]/div/input").send_keys("AUTO_UI_TEST_KG")
- a.find_element(By.XPATH,"//*[@id='app']/div/div[1]/div[2]/div[2]/div[2]/div/input").send_keys("kongweibin1")
- a.find_element(By.ID,"login").click()
+ a.find_element(By.XPATH, loginpage_username_posxpath).send_keys("AUTO_UI_TEST_KG")
+ a.find_element(By.XPATH, loginpage_passwd_posxpath).send_keys("kongweibin1")
+ a.find_element(By.XPATH, login_page_sign_in_posxpath).click()
time.sleep(2)
# 测试修改数据
r = HijackFiles(a)
@@ -875,11 +992,11 @@ if __name__ == '__main__':
# model=0/1 ====0:单个 1group
# type =IMSI/Phone_Number/IMEI
data= {
- "ids": "test_audit_log_all_operation",
- "model": "modify",
- "file": "test_gif_1.gif->test_gif_2.gif",
- "download_name": "test_gif_1.gif->Mirror Server Response",
- "file_type": "gif->不修改",
+ "ids": "创建png类型hijack_files数据再修改数据svg+xml数据",
+ "model": "modify",
+ "file": "test_png_1.png->test_svg_1.svg",
+ "download_name": "test_png_1.gif->name_test_svg_1.svg",
+ "file_type": "png->svg+xml"
}
# 测试link
# link_parse = configparser.ConfigParser()
@@ -910,4 +1027,4 @@ if __name__ == '__main__':
"""
# r.chk_lnk_mod_case(data, link_list_dict=link_list_dict)
- r._audit_log_all_operation(data)
+ r.hijack_files_case(data)
diff --git a/common/ui_common/profiles/tcp_proxy_profiles.py b/common/ui_common/profiles/tcp_proxy_profiles.py
index 0cb7b5c8..a0f09abc 100644
--- a/common/ui_common/profiles/tcp_proxy_profiles.py
+++ b/common/ui_common/profiles/tcp_proxy_profiles.py
@@ -21,6 +21,7 @@ from common.ui_common.login_logout.loginout import LogInOut
from selenium import webdriver
import copy
from selenium.webdriver.common.keys import Keys
+import datetime
class TcpProxyProfiles:
def __init__(self, demo_fixture: MyWebDriver):
@@ -36,7 +37,7 @@ class TcpProxyProfiles:
except NoSuchElementException:
pass
- def tcpProxyProfiles_case(self, data:{}):
+ def tcp_proxy_profiles_case(self, data:{}):
self._create(data) # 创建
time.sleep(3)
self._query(data, require_assertion=1, Name=self.random_name) # 创建后查询
@@ -44,16 +45,16 @@ class TcpProxyProfiles:
if data["model"].strip().lower() == "modify": # 修改测试时,执行修改方法
self._modify(data)
time.sleep(2)
- self._query(data, require_assertion=2, ID=self.first_row_ID_content)
+ self._query(data, require_assertion=2, Name=self.random_name)
self._del()
@screenshot_on_failure
def _goto_subProfilePage(self, vsys_name_2=""):
# 菜单操作,定位到tcp_proxy_profiles列表页
- # self.driver.find_element(By.CSS_SELECTOR, mainPage_navigationBar_logo_posCss).click()
+ self.driver.find_element(By.XPATH, mainpage_navigation_bar_logo_posxpath).click()
self.profiles_po.change_vsys(vsys_name=vsys_name_2)
- self.driver.find_element(By.ID, mainPage_firstLevelMenu_profiles_posId).click()
- self.driver.find_element(By.ID, mainPage_secondLevelMenu_tcpProxyProfiles_posId).click()
+ self.driver.find_element(By.XPATH, mainpage_first_level_menu_profiles_posxpath).click()
+ self.driver.find_element(By.XPATH, mainpage_second_level_menu_tcp_proxy_profiles_posxpath).click()
def _goto_vsysPage(self, vsys_name_2=""):
# 菜单操作,定位到不同的vsys
@@ -65,35 +66,35 @@ class TcpProxyProfiles:
self._goto_subProfilePage()
#创建
#点击create
- self.driver.find_element(By.ID, listPage_profile_tcpProxyProfiles_createButton_posId).click()
+ self.driver.find_element(By.XPATH, listpage_profile_tcp_proxy_profiles_create_button_posxpath).click()
#在create 创建页面操作
# 页面其它选项操作
self._operate_page(data, operation_type="create")
# Name
if source_name:
self.random_name = source_name[0]
- self.driver.find_element(By.ID, tcpProxyProfiles_input_Name_posId).send_keys(self.random_name)
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_name_posxpath).send_keys(self.random_name)
else:
self.random_name = self.my_random.random_name()
- self.driver.find_element(By.ID, tcpProxyProfiles_input_Name_posId).send_keys(self.random_name)
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_name_posxpath).send_keys(self.random_name)
self.driver.find_element(By.XPATH, "//label[text()='Name']")
#点击OK
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_oK_posCss).click()
- if self.driver.element_isExist(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss):
- if self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).is_displayed():
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_button_ok_posxpath).click()
+ if self.driver.element_isExist(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss):
+ if self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).is_displayed():
print(1)
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).click()
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).click()
elif int(data["c_ttl"].split("->")[0].strip()) == 0 or int(data["c_userTimeout"].split("->")[0].strip()) == 0:
print("ttl=0")
# 点击OK
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_oK_posCss).click()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_button_ok_posxpath).click()
pytest_check.equal(
self.driver.find_element(By.XPATH, "//p[@class='el-message__content']").text.strip(),
"Client-side Parameters cannot be empty",
msg="所在行数{}".format(inspect.currentframe().f_lineno))
# 点击取消
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_cancel_posCss).click()
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).click()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_button_cancel_posxpath).click()
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).click()
elif int(data["s_ttl"].split("->")[0].strip()) == 0 or int(data["s_userTimeout"].split("->")[0].strip()) == 0:
print("s_ttl=0")
pytest_check.equal(
@@ -101,8 +102,8 @@ class TcpProxyProfiles:
"Server-side Parameters cannot be empty",
msg="所在行数{}".format(inspect.currentframe().f_lineno))
# 点击取消
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_cancel_posCss).click()
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).click()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_button_cancel_posxpath).click()
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).click()
elif len(self.random_name) < 4: # name不符合要求
print("name")
if self.driver.element_isExist(By.XPATH,
@@ -115,24 +116,24 @@ class TcpProxyProfiles:
else:
print("name less than 4,no error message")
# 点击取消
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_cancel_posCss).click()
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).click()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_button_cancel_posxpath).click()
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).click()
elif int(data["c_ttl"].split("->")[0].strip()) < 1 or int(data["c_ttl"].split("->")[0].strip()) > 255 or int(data["s_ttl"].split("->")[0].strip()) < 1 or int(data["s_ttl"].split("->")[0].strip()) > 255:
print("ttl test")
error_content = self.driver.find_element(By.XPATH, "//label[text()='TTL']/parent::div//div[@class='el-form-item__error']").text.strip()
pytest_check.equal(error_content, "The TTL range:1-255", msg="所在行数{}".format(inspect.currentframe().f_lineno))
# 点击取消
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_cancel_posCss).click()
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).click()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_button_cancel_posxpath).click()
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).click()
elif int(data["c_userTimeout"].split("->")[0].strip()) < 200 or int(data["c_userTimeout"].split("->")[0].strip()) > 60000 or int(data["s_userTimeout"].split("->")[0].strip()) < 200 or int(data["s_userTimeout"].split("->")[0].strip()) > 60000:
print("user time test")
# 点击OK
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_oK_posCss).click()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_button_cancel_posxpath).click()
error_content = self.driver.find_element(By.XPATH, "//label[text()='User Timeout']/parent::div//div[@class='el-form-item__error']").text.strip()
pytest_check.equal(error_content, "The User Timeout range:200-60000", msg="所在行数{}".format(inspect.currentframe().f_lineno))
# 点击取消
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_cancel_posCss).click()
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).click()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_button_cancel_posxpath).click()
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).click()
elif data["c_override_MSS"].split("->")[0].strip() == "on":
if int(data["c_overrideMSS"].split("->")[0].strip()) < 536 or int(data["c_overrideMSS"].split("->")[0].strip()) > 1460:
print("overridemss")
@@ -140,8 +141,8 @@ class TcpProxyProfiles:
"//input[@placeholder='536-1460']/ancestor::div[@class='el-form-item__content']//div[@class='el-form-item__error']").text.strip()
pytest_check.equal(error_content, "The MSS range:536-1460", msg="所在行数{}".format(inspect.currentframe().f_lineno))
# 点击取消
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_cancel_posCss).click()
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).click()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_button_cancel_posxpath).click()
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).click()
elif data["s_override_MSS"].split("->")[0].strip() == "on":
if int(data["s_overrideMSS"].split("->")[0].strip()) < 536 or int(data["s_overrideMSS"].split("->")[0].strip()) > 1460:
print("s_overridemss")
@@ -149,8 +150,8 @@ class TcpProxyProfiles:
"//input[@placeholder='536-1460']/ancestor::div[@class='el-form-item__content']//div[@class='el-form-item__error']").text.strip()
pytest_check.equal(error_content, "The MSS range:536-1460", msg="所在行数{}".format(inspect.currentframe().f_lineno))
# 点击取消
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_cancel_posCss).click()
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).click()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_button_cancel_posxpath).click()
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).click()
elif data["c_keepalive"].split("->")[0].strip() == "on":
if int(data["c_probe_number"].split("->")[0].strip()) < 1 or int(data["c_probe_number"].split("->")[0].strip()) > 222:
print("c-pnumber")
@@ -158,24 +159,24 @@ class TcpProxyProfiles:
"//label[text()='Probe Number']/parent::div//div[@class='el-form-item__error']").text.strip()
pytest_check.equal(error_content, "The Probe Number range: 1-222", msg="所在行数{}".format(inspect.currentframe().f_lineno))
# 点击取消
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_cancel_posCss).click()
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).click()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_button_cancel_posxpath).click()
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).click()
if int(data["c_idle_time"].split("->")[0].strip()) < 30 or int(data["c_idle_time"].split("->")[0].strip()) > 7200:
print("c_idletine")
error_content = self.driver.find_element(By.XPATH,
"//label[text()='Idle Time']/parent::div//div[@class='el-form-item__error']").text.strip()
pytest_check.equal(error_content, "The Idle Time range:30-7200", msg="所在行数{}".format(inspect.currentframe().f_lineno))
# 点击取消
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_cancel_posCss).click()
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).click()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_button_cancel_posxpath).click()
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).click()
if int(data["c_interval"].split("->")[0].strip()) < 15 or int(data["c_interval"].split("->")[0].strip()) > 75:
print("c_interval")
error_content = self.driver.find_element(By.XPATH,
"//label[text()='Interval']/parent::div//div[@class='el-form-item__error']").text.strip()
pytest_check.equal(error_content, "The Interval range:15-75", msg="所在行数{}".format(inspect.currentframe().f_lineno))
# 点击取消
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_cancel_posCss).click()
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).click()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_button_cancel_posxpath).click()
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).click()
elif data["s_keepalive"].split("->")[0].strip() == "on":
if int(data["s_probe_number"].split("->")[0].strip()) < 1 or int(data["s_probe_number"].split("->")[0].strip()) > 222:
print("s_pnumber")
@@ -183,24 +184,24 @@ class TcpProxyProfiles:
"//label[text()='Probe Number']/parent::div//div[@class='el-form-item__error']").text.strip()
pytest_check.equal(error_content, "The Probe Number range: 1-222", msg="所在行数{}".format(inspect.currentframe().f_lineno))
# 点击取消
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_cancel_posCss).click()
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).click()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_button_cancel_posxpath).click()
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).click()
if int(data["s_idle_time"].split("->")[0].strip()) < 30 or int(data["s_idle_time"].split("->")[0].strip()) > 7200:
print("s_idle")
error_content = self.driver.find_element(By.XPATH,
"//label[text()='Idle Time']/parent::div//div[@class='el-form-item__error']").text.strip()
pytest_check.equal(error_content, "The Idle Time range:30-7200", msg="所在行数{}".format(inspect.currentframe().f_lineno))
# 点击取消
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_cancel_posCss).click()
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).click()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_button_cancel_posxpath).click()
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).click()
if int(data["s_interval"].split("->")[0].strip()) < 15 or int(data["s_interval"].split("->")[0].strip()) > 75:
print("s_interval")
error_content = self.driver.find_element(By.XPATH,
"//label[text()='Interval']/parent::div//div[@class='el-form-item__error']").text.strip()
pytest_check.equal(error_content, "The Interval range:15-75", msg="所在行数{}".format(inspect.currentframe().f_lineno))
# 点击取消
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_cancel_posCss).click()
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).click()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_button_cancel_posxpath).click()
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).click()
time.sleep(2)
return self.random_name
@@ -219,99 +220,102 @@ class TcpProxyProfiles:
#解析输入data数据的数据
#enable TCP Passthrough 开关操作
- self._operate_switch(data, data_index=data_index, no_modify=no_modify, switch_name="enable_TCP_passthrough", element_position=tcpProxyProfiles_switch_enableTCPPassthrough_posXpath)
+ self._operate_switch(data, data_index=data_index, no_modify=no_modify, switch_name="enable_TCP_passthrough", element_position=f"{tcp_proxy_profiles_switch_enable_tcp_passthrough_posxpath}//span[@class='MuiSwitch-root MuiSwitch-sizeMedium css-l8jo8y']")
#Client_side 开关操作 override MSS, no delay, keepalive
- self._operate_switch(data, data_index=data_index, no_modify=no_modify, switch_name="c_override_MSS", element_position=tcpProxyProfiles_switch_clientOverrideMSS_posXpath)
+ self._operate_switch(data, data_index=data_index, no_modify=no_modify, switch_name="c_override_MSS", element_position=tcp_proxy_profiles_switch_client_override_mss_posxpath)
# Client_side 输入操作 override MSS, ttl, user Timeout
c_overrideMSS_test = self._get_value_from_data(data, key="c_override_MSS", data_index=data_index)
if c_overrideMSS_test == "on" or c_overrideMSS_test == no_modify:
c_overrideMSS = self._get_value_from_data(data, key="c_overrideMSS", data_index=data_index)
if c_overrideMSS != no_modify: # 判断不修改时跳过操作
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientOverrideMSS_posXpath).clear()
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientOverrideMSS_posXpath).send_keys(c_overrideMSS)
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_override_mss_posxath).clear()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_override_mss_posxath).send_keys(c_overrideMSS)
self.driver.find_element(By.XPATH, "//label[text()='Override MSS']").click()
- self._operate_switch(data, data_index=data_index, no_modify=no_modify, switch_name="c_no_delay", element_position=tcpProxyProfiles_switch_clientNoDelay_posXpath)
+ self._operate_switch(data, data_index=data_index, no_modify=no_modify, switch_name="c_no_delay", element_position=tcp_proxy_profiles_switch_client_nodelay_posxpath)
c_ttl = self._get_value_from_data(data, key="c_ttl", data_index=data_index)
if c_ttl != no_modify: # 判断不修改时跳过操作
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientTTL_posXpath).clear()
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientTTL_posXpath).send_keys(c_ttl)
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_ttl_posxpath).send_keys(Keys.CONTROL + "a")
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_ttl_posxpath).send_keys(Keys.DELETE)
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_ttl_posxpath).send_keys(c_ttl)
self.driver.find_element(By.XPATH, "//label[text()='TTL']").click()
- self._operate_switch(data, data_index=data_index, no_modify=no_modify, switch_name="c_keepalive", element_position=tcpProxyProfiles_switch_clientKeepalive_posXpath)
+ self._operate_switch(data, data_index=data_index, no_modify=no_modify, switch_name="c_keepalive", element_position=tcp_proxy_profiles_switch_client_keepalive_posxpath)
c_keepalive_test = self._get_value_from_data(data, key="c_keepalive", data_index=data_index)
if c_keepalive_test == "on":
c_probe_number = self._get_value_from_data(data, key="c_probe_number", data_index=data_index)
if c_probe_number != no_modify: # 判断不修改时跳过操作
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientProbeNumber_posXpath).clear()
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientProbeNumber_posXpath).send_keys(c_probe_number)
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_probe_number_posxpath).clear()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_probe_number_posxpath).send_keys(c_probe_number)
self.driver.find_element(By.XPATH, "//label[text()='Probe Number']").click()
c_idle_time = self._get_value_from_data(data, key="c_idle_time", data_index=data_index)
if c_idle_time != no_modify: # 判断不修改时跳过操作
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientIdleTime_posXpath).clear()
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientIdleTime_posXpath).send_keys(c_idle_time)
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_idle_time_posxpath).clear()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_idle_time_posxpath).send_keys(c_idle_time)
self.driver.find_element(By.XPATH, "//label[text()='Idle Time']").click()
c_interval = self._get_value_from_data(data, key="c_interval", data_index=data_index)
if c_interval != no_modify: # 判断不修改时跳过操作
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientInterval_posXpath).clear()
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientInterval_posXpath).send_keys(c_interval)
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_interval_posxpath).clear()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_interval_posxpath).send_keys(c_interval)
self.driver.find_element(By.XPATH, "//label[text()='Interval']").click()
self._operate_switch(data, data_index=data_index, no_modify=no_modify, switch_name="c_UserTimeout_switch",
- element_position=tcpProxyProfiles_switch_clientUserTimeout_posXpath)
+ element_position=tcp_proxy_profiles_switch_client_user_timeout_posxpath)
c_UserTimeout_test = self._get_value_from_data(data, key="c_UserTimeout_switch", data_index=data_index)
if c_UserTimeout_test == "on" or c_overrideMSS_test == no_modify:
c_userTimeout = self._get_value_from_data(data, key="c_userTimeout", data_index=data_index)
if c_userTimeout != no_modify: # 判断不修改时跳过操作
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientUserTimeout_posXpath).clear()
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientUserTimeout_posXpath).send_keys(c_userTimeout)
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_user_timeout_posxpath).clear()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_user_timeout_posxpath).send_keys(c_userTimeout)
self.driver.find_element(By.XPATH, "//label[text()='User Timeout']").click()
# Server_side 开关操作 override MSS, no delay, keepalive
- self._operate_switch(data, data_index=data_index, no_modify=no_modify, switch_name="s_override_MSS", element_position=tcpProxyProfiles_switch_serverOverrideMSS_posXpath)
+ self._operate_switch(data, data_index=data_index, no_modify=no_modify, switch_name="s_override_MSS", element_position=tcp_proxy_profiles_switch_server_override_mss_posxpath)
# Server_side 输入操作 override MSS, ttl, user Timeout
s_overrideMSS_test = self._get_value_from_data(data, key="s_override_MSS", data_index=data_index)
if s_overrideMSS_test == "on":
s_overrideMSS = self._get_value_from_data(data, key="s_overrideMSS", data_index=data_index)
if s_overrideMSS != no_modify: # 判断不修改时跳过操作
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_serverOverrideMSS_posXpath).clear()
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_serverOverrideMSS_posXpath).send_keys(s_overrideMSS)
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_override_mss_posxpath).clear()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_override_mss_posxpath).send_keys(s_overrideMSS)
self.driver.find_element(By.XPATH, "//label[text()='Override MSS']").click()
- self._operate_switch(data, data_index=data_index, no_modify=no_modify, switch_name="s_no_delay", element_position=tcpProxyProfiles_switch_serverNoDelay_posXpath)
+ self._operate_switch(data, data_index=data_index, no_modify=no_modify, switch_name="s_no_delay", element_position=tcp_proxy_profiles_switch_server_nodelay_posxpath)
s_ttl = self._get_value_from_data(data, key="s_ttl", data_index=data_index)
if s_ttl != no_modify: # 判断不修改时跳过操作
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_serverTTL_posXpath).clear()
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_serverTTL_posXpath).send_keys(s_ttl)
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_ttl_posxpath).send_keys(
+ Keys.CONTROL + "a")
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_ttl_posxpath).send_keys(Keys.DELETE)
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_ttl_posxpath).send_keys(s_ttl)
self.driver.find_element(By.XPATH, "//label[text()='TTL']").click()
- self._operate_switch(data, data_index=data_index, no_modify=no_modify, switch_name="s_keepalive", element_position=tcpProxyProfiles_switch_serverKeepalive_posXpath)
+ self._operate_switch(data, data_index=data_index, no_modify=no_modify, switch_name="s_keepalive", element_position=tcp_proxy_profiles_switch_server_keepalive_posxpath)
s_keepalive_test = self._get_value_from_data(data, key="s_keepalive", data_index=data_index)
if s_keepalive_test == "on":
s_probe_number = self._get_value_from_data(data, key="s_probe_number", data_index=data_index)
if s_probe_number != no_modify: # 判断不修改时跳过操作
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_serverProbeNumber_posXpath).clear()
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_serverProbeNumber_posXpath).send_keys(s_probe_number)
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_probe_number_posxpath).clear()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_probe_number_posxpath).send_keys(s_probe_number)
self.driver.find_element(By.XPATH, "//label[text()='Probe Number']").click()
s_idle_time = self._get_value_from_data(data, key="s_idle_time", data_index=data_index)
if s_idle_time != no_modify: # 判断不修改时跳过操作
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_serverIdleTime_posXpath).clear()
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_serverIdleTime_posXpath).send_keys(s_idle_time)
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_idle_time_posxpath).clear()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_idle_time_posxpath).send_keys(s_idle_time)
self.driver.find_element(By.XPATH, "//label[text()='Idle Time']").click()
s_interval = self._get_value_from_data(data, key="s_interval", data_index=data_index)
if s_interval != no_modify: # 判断不修改时跳过操作
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_serverInterval_posXpath).clear()
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_serverInterval_posXpath).send_keys(s_interval)
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_interval_posxpath).clear()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_interval_posxpath).send_keys(s_interval)
self.driver.find_element(By.XPATH, "//label[text()='Interval']").click()
self._operate_switch(data, data_index=data_index, no_modify=no_modify, switch_name="s_UserTimeout_switch",
- element_position=tcpProxyProfiles_switch_serverUserTimeout_posXpath)
+ element_position=tcp_proxy_profiles_switch_server_user_timeout_posxpath)
s_UserTimeout_test = self._get_value_from_data(data, key="s_UserTimeout_switch", data_index=data_index)
if s_UserTimeout_test == "on":
s_userTimeout = self._get_value_from_data(data, key="s_userTimeout", data_index=data_index)
if s_userTimeout != no_modify: # 判断不修改时跳过操作
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_serverUserTimeout_posXpath).clear()
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_serverUserTimeout_posXpath).send_keys(s_userTimeout)
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_user_timeout_posxpath).clear()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_user_timeout_posxpath).send_keys(s_userTimeout)
self.driver.find_element(By.XPATH, "//label[text()='User Timeout']").click()
def _operate_switch(self, data: {}, data_index=0, no_modify="不修改", switch_name="", element_position=""):
"""
@@ -329,14 +333,14 @@ class TcpProxyProfiles:
# print("switch_value=", switch_value)
if switch_value != no_modify: #编辑时,有不修改则不用执行
#先获取当前页面中开关状态 include_root_current_class : class="el-switch is-checked" 有is-checked当前状态为开,没有is-chedked当前状态为关
- swith_current_class = self.driver.find_element(By.XPATH, element_position).get_attribute("class")
+ swith_current_class = self.driver.find_element(By.XPATH, f"{element_position}//span[contains(@class, 'MuiButtonBase-root')]").get_attribute("class")
if "on" == switch_value: #数据中为开
- if "is-checked" in swith_current_class: #页面当前为开,不用点击开关
+ if "Mui-checked" in swith_current_class: #页面当前为开,不用点击开关
pass
else: #页面当前为关,需要点击开关
self.driver.find_element(By.XPATH, element_position).click()
else: #用例输入为关
- if "is-checked" in swith_current_class: #页面当前为开,需要点击开关
+ if "Mui-checked" in swith_current_class: #页面当前为开,需要点击开关
self.driver.find_element(By.XPATH, element_position).click()
else: #页面当前为关,不用点击开关
pass
@@ -368,97 +372,98 @@ class TcpProxyProfiles:
# 点击勾选第一行选择框
self.first_row_checkBox_element.click() # 变量来自查询函数
time.sleep(1)
- self.driver.find_element(By.ID, listPage_profile_tcpProxyProfiles_editButton_posId).click()
+ self.driver.find_element(By.XPATH, listpage_profile_tcp_proxy_profiles_edit_button_posxpath).click()
time.sleep(2)
# 校验数据是否丢失、不显示
if f_name == 1:
- current_name = self.driver.find_element(By.ID, tcpProxyProfiles_input_Name_posId).get_attribute("value")
+ current_name = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_name_posxpath).get_attribute("value")
pytest_check.equal(current_name, self.random_name, msg="所在行数{}".format(inspect.currentframe().f_lineno))
- current_ETP = self.driver.find_element(By.XPATH, tcpProxyProfiles_switch_enableTCPPassthrough_posXpath).get_attribute("aria-checked")
- if self._get_value_from_data(data, key="enable_TCP_passthrough") == "on":
- pytest_check.equal(current_ETP, "true", msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ current_ETP = self.driver.find_element(By.XPATH, f"{tcp_proxy_profiles_switch_enable_tcp_passthrough_posxpath}//span[contains(@class, 'MuiButtonBase-root')]").get_attribute("class")
+ print(current_ETP)
+ if self._get_value_from_data(data, key="enable_TCP_passthrough") == "on":
+ pytest_check.is_in("Mui-checked", current_ETP, msg="所在行数{}".format(inspect.currentframe().f_lineno))
else:
- pytest_check.equal(current_ETP, None, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ pytest_check.is_not_in("Mui-checked", current_ETP, msg="所在行数{}".format(inspect.currentframe().f_lineno))
# client-side
current_C_OMSS = self.driver.find_element(By.XPATH,
- tcpProxyProfiles_switch_clientOverrideMSS_posXpath).get_attribute("aria-checked")
+ f"{tcp_proxy_profiles_switch_server_override_mss_posxpath}//span[contains(@class, 'MuiButtonBase-root')]").get_attribute("class")
if self._get_value_from_data(data, key="c_override_MSS") == "on":
- pytest_check.equal(current_C_OMSS, "true", msg="所在行数{}".format(inspect.currentframe().f_lineno))
- current_C_OMSS_value = self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientOverrideMSS_posXpath).get_attribute("value")
+ pytest_check.is_in("Mui-checked", current_C_OMSS, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ current_C_OMSS_value = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_override_mss_posxath).get_attribute("value")
pytest_check.equal(current_C_OMSS_value, data["c_overrideMSS"].split("->")[0].strip(), msg="所在行数{}".format(inspect.currentframe().f_lineno))
else:
- pytest_check.equal(current_C_OMSS, None, msg="所在行数{}".format(inspect.currentframe().f_lineno))
- current_C_Nodelay = self.driver.find_element(By.XPATH, tcpProxyProfiles_switch_clientNoDelay_posXpath).get_attribute("aria-checked")
+ pytest_check.is_not_in("Mui-checked", current_C_OMSS, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ current_C_Nodelay = self.driver.find_element(By.XPATH, f"{tcp_proxy_profiles_switch_client_nodelay_posxpath}//span[contains(@class, 'MuiButtonBase-root')]").get_attribute("class")
if self._get_value_from_data(data, key="c_no_delay") == "on":
- pytest_check.equal(current_C_Nodelay, "true", msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ pytest_check.is_in("Mui-checked", current_C_Nodelay, msg="所在行数{}".format(inspect.currentframe().f_lineno))
else:
- pytest_check.equal(current_C_Nodelay, None, msg="所在行数{}".format(inspect.currentframe().f_lineno))
- current_C_TTL = self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientTTL_posXpath).get_attribute("value")
+ pytest_check.is_not_in("Mui-checked", current_C_Nodelay, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ current_C_TTL = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_ttl_posxpath).get_attribute("value")
pytest_check.equal(current_C_TTL, data["c_ttl"].split("->")[0].strip(), msg="所在行数{}".format(inspect.currentframe().f_lineno))
- current_C_keepalive = self.driver.find_element(By.XPATH, tcpProxyProfiles_switch_clientKeepalive_posXpath).get_attribute("aria-checked")
+ current_C_keepalive = self.driver.find_element(By.XPATH, f"{tcp_proxy_profiles_switch_client_keepalive_posxpath}//span[contains(@class, 'MuiButtonBase-root')]").get_attribute("class")
if self._get_value_from_data(data, key="c_keepalive") == "on":
- pytest_check.equal(current_C_keepalive, "true", msg="所在行数{}".format(inspect.currentframe().f_lineno))
- current_C_Pnumber = self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientProbeNumber_posXpath).get_attribute("value")
- current_C_idletime = self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientIdleTime_posXpath).get_attribute("value")
- current_C_interval = self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientInterval_posXpath).get_attribute("value")
+ pytest_check.is_in("Mui-checked", current_C_keepalive, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ current_C_Pnumber = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_probe_number_posxpath).get_attribute("value")
+ current_C_idletime = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_idle_time_posxpath).get_attribute("value")
+ current_C_interval = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_interval_posxpath).get_attribute("value")
pytest_check.equal(current_C_Pnumber, data["c_probe_number"].split("->")[0].strip(), msg="所在行数{}".format(inspect.currentframe().f_lineno))
pytest_check.equal(current_C_idletime, data["c_idle_time"].split("->")[0].strip(), msg="所在行数{}".format(inspect.currentframe().f_lineno))
pytest_check.equal(current_C_interval, data["c_interval"].split("->")[0].strip(), msg="所在行数{}".format(inspect.currentframe().f_lineno))
else:
- pytest_check.equal(current_C_keepalive, None, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ pytest_check.is_not_in("Mui-checked", current_C_keepalive, msg="所在行数{}".format(inspect.currentframe().f_lineno))
current_C_UserTimeout_switch = self.driver.find_element(By.XPATH,
- tcpProxyProfiles_switch_clientUserTimeout_posXpath).get_attribute("aria-checked")
+ f"{tcp_proxy_profiles_switch_client_user_timeout_posxpath}//span[contains(@class, 'MuiButtonBase-root')]").get_attribute("class")
if self._get_value_from_data(data, key="c_UserTimeout_switch") == "on":
- pytest_check.equal(current_C_UserTimeout_switch, "true", msg="所在行数{}".format(inspect.currentframe().f_lineno))
- current_C_Utime = self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientUserTimeout_posXpath).get_attribute("value")
+ pytest_check.is_in("Mui-checked", current_C_UserTimeout_switch, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ current_C_Utime = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_user_timeout_posxpath).get_attribute("value")
pytest_check.equal(current_C_Utime, data["c_userTimeout"].split("->")[0].strip(), msg="所在行数{}".format(inspect.currentframe().f_lineno))
else:
- pytest_check.equal(current_C_UserTimeout_switch, None, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ pytest_check.is_not_in("Mui-checked", current_C_UserTimeout_switch, msg="所在行数{}".format(inspect.currentframe().f_lineno))
# server-side
- current_S_OMSS = self.driver.find_element(By.XPATH, tcpProxyProfiles_switch_serverOverrideMSS_posXpath).get_attribute("aria-checked")
+ current_S_OMSS = self.driver.find_element(By.XPATH, f"{tcp_proxy_profiles_switch_server_override_mss_posxpath}//span[contains(@class, 'MuiButtonBase-root')]").get_attribute("class")
if self._get_value_from_data(data, key="s_override_MSS") == "on":
- pytest_check.equal(current_S_OMSS, "true", msg="所在行数{}".format(inspect.currentframe().f_lineno))
- current_S_OMSS_value = self.driver.find_element(By.XPATH, tcpProxyProfiles_input_serverOverrideMSS_posXpath).get_attribute("value")
+ pytest_check.is_in("Mui-checked", current_S_OMSS, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ current_S_OMSS_value = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_override_mss_posxpath).get_attribute("value")
pytest_check.equal(current_S_OMSS_value, data["s_overrideMSS"].split("->")[0].strip(), msg="所在行数{}".format(inspect.currentframe().f_lineno))
else:
- pytest_check.equal(current_S_OMSS, None, msg="所在行数{}".format(inspect.currentframe().f_lineno))
- current_S_Nodelay = self.driver.find_element(By.XPATH, tcpProxyProfiles_switch_serverNoDelay_posXpath).get_attribute("aria-checked")
+ pytest_check.is_not_in("Mui-checked", current_S_OMSS, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ current_S_Nodelay = self.driver.find_element(By.XPATH, f"{tcp_proxy_profiles_switch_server_nodelay_posxpath}//span[contains(@class, 'MuiButtonBase-root')]").get_attribute("class")
if self._get_value_from_data(data, key="s_no_delay") == "on":
- pytest_check.equal(current_S_Nodelay, "true", msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ pytest_check.is_in("Mui-checked", current_S_Nodelay, msg="所在行数{}".format(inspect.currentframe().f_lineno))
else:
- pytest_check.equal(current_S_Nodelay, None, msg="所在行数{}".format(inspect.currentframe().f_lineno))
- current_S_TTL = self.driver.find_element(By.XPATH, tcpProxyProfiles_input_serverTTL_posXpath).get_attribute("value")
+ pytest_check.is_not_in("Mui-checked", current_S_Nodelay, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ current_S_TTL = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_ttl_posxpath).get_attribute("value")
pytest_check.equal(current_S_TTL, data["s_ttl"].split("->")[0].strip(), msg="所在行数{}".format(inspect.currentframe().f_lineno))
- current_S_keepalive = self.driver.find_element(By.XPATH, tcpProxyProfiles_switch_serverKeepalive_posXpath).get_attribute("aria-checked")
+ current_S_keepalive = self.driver.find_element(By.XPATH, f"{tcp_proxy_profiles_switch_server_keepalive_posxpath}//span[contains(@class, 'MuiButtonBase-root')]").get_attribute("class")
if self._get_value_from_data(data, key="s_keepalive") == "on":
- pytest_check.equal(current_S_keepalive, "true", msg="所在行数{}".format(inspect.currentframe().f_lineno))
- current_S_Pnumber = self.driver.find_element(By.XPATH, tcpProxyProfiles_input_serverProbeNumber_posXpath).get_attribute("value")
- current_S_idletime = self.driver.find_element(By.XPATH, tcpProxyProfiles_input_serverIdleTime_posXpath).get_attribute("value")
- current_S_interval = self.driver.find_element(By.XPATH, tcpProxyProfiles_input_serverInterval_posXpath).get_attribute("value")
+ pytest_check.is_in("Mui-checked", current_S_keepalive, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ current_S_Pnumber = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_probe_number_posxpath).get_attribute("value")
+ current_S_idletime = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_idle_time_posxpath).get_attribute("value")
+ current_S_interval = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_interval_posxpath).get_attribute("value")
pytest_check.equal(current_S_Pnumber, data["s_probe_number"].split("->")[0].strip(), msg="所在行数{}".format(inspect.currentframe().f_lineno))
pytest_check.equal(current_S_idletime, data["s_idle_time"].split("->")[0].strip(), msg="所在行数{}".format(inspect.currentframe().f_lineno))
pytest_check.equal(current_S_interval, data["s_interval"].split("->")[0].strip(), msg="所在行数{}".format(inspect.currentframe().f_lineno))
else:
- pytest_check.equal(current_S_keepalive, None, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ pytest_check.is_not_in("Mui-checked", current_S_keepalive, msg="所在行数{}".format(inspect.currentframe().f_lineno))
current_S_UserTimeout_switch = self.driver.find_element(By.XPATH,
- tcpProxyProfiles_switch_serverUserTimeout_posXpath).get_attribute("aria-checked")
+ f"{tcp_proxy_profiles_switch_server_user_timeout_posxpath}//span[contains(@class, 'MuiButtonBase-root')]").get_attribute("class")
if self._get_value_from_data(data, key="s_UserTimeout_switch") == "on":
- pytest_check.equal(current_S_UserTimeout_switch, "true", msg="所在行数{}".format(inspect.currentframe().f_lineno))
- current_S_Utime = self.driver.find_element(By.XPATH, tcpProxyProfiles_input_serverUserTimeout_posXpath).get_attribute("value")
+ pytest_check.is_in("Mui-checked", current_S_UserTimeout_switch, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ current_S_Utime = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_user_timeout_posxpath).get_attribute("value")
pytest_check.equal(current_S_Utime, data["s_userTimeout"].split("->")[0].strip(), msg="所在行数{}".format(inspect.currentframe().f_lineno))
else:
- pytest_check.equal(current_S_UserTimeout_switch, None, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ pytest_check.is_not_in("Mui-checked", current_S_UserTimeout_switch, msg="所在行数{}".format(inspect.currentframe().f_lineno))
# 解析修改数据
self._operate_page(data, operation_type="edit")
# 修改Name
if f_name == 1:
new_Name = "(修改后)"
- self.driver.find_element(By.ID, tcpProxyProfiles_input_Name_posId).send_keys(new_Name)
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_name_posxpath).send_keys(new_Name)
self.random_name = self.random_name + new_Name
# 点击ok
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_oK_posCss).click()
- if self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).is_displayed():
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).click()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_button_ok_posxpath).click()
+ # if self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).is_displayed():
+ # self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).click()
@screenshot_on_failure
def _del(self, del_model=0):
@@ -471,7 +476,7 @@ class TcpProxyProfiles:
#点击勾选第一行选择框
self.first_row_checkBox_element.click() #变量来自查询函数
elif del_model == 1: # 勾选可以删除的选项,并删除;没有锁、没有被引用的对象
- rows = self.driver.find_element(By.XPATH, listPage_profilTable_dnsRecords_tableTbody_posXpath).find_elements(By.XPATH, "./tr")
+ rows = self.driver.find_element(By.XPATH, listpage_profile_table_dns_records_table_tbody_posxpath).find_elements(By.XPATH, "./tr")
if len(rows) == 0: # 没有数据,直接返回
return
else:
@@ -479,8 +484,8 @@ class TcpProxyProfiles:
if del_result == 1: # 1表示没有删除对象,直接返回
return 0
# 调用profiles的功能删除方法
- self.profiles_po.delete(listPage_profile_tcpProxyProfiles_delButton_posId, listPage_dialogTips_tcpProxyProfiles_button_yes_posCss,
- listPage_dialogTips_tcpProxyProfiles_button_no_posCss)
+ self.profiles_po.delete(listpage_profile_tcp_proxy_profiles_del_button_posxpath, listpage_dialog_tips_tcp_proxy_profiles_button_yes_posxpath,
+ listpage_dialog_tips_tcp_proxy_profiles_button_no_posxpath)
@screenshot_on_failure
def _query(self, data: {}, vsys_name_2="", require_assertion=0, **kwargs):
@@ -493,10 +498,10 @@ class TcpProxyProfiles:
# 打开该列表
self._goto_subProfilePage(vsys_name_2=vsys_name_2)
# first_row查询到的第一行内容。map_header_className为需要使用的到字典,用来提取第一行的结果。
- result = self.profiles_po.query(listPage_profileSearch_tcpProxyProfiles_selectLabel_posId,
+ result = self.profiles_po.query(listpage_profile_search_tcp_proxy_profiles_select_label_posxpath,
listPage_profileSearch_tcpProxyProfiles_dropDown_item_posXpath,
listPage_profileSearch_tcpProxyProfiles_input_itemContent_posXpath,
- listPage_profileSearch_tcpProxyProfiles_buttonSearch_posId,
+ listpage_profile_search_tcp_proxy_profiles_button_search_posxpath,
listPage_profilTable_tcpProxyProfiles_tableTbody_posXpath,
listPage_profilTable_tcpProxyProfiles_tableHeader_posXpath, **kwargs)
if result == [0, 0]:
@@ -504,32 +509,32 @@ class TcpProxyProfiles:
else:
first_row, map_header_className = result
# 第一行的勾选定位,给修改、删除使用
- self.first_row_checkBox_element = first_row.find_element(By.XPATH, "//span[@class='el-checkbox__input']")
- self.first_row_ID_content = first_row.find_element(By.XPATH, "//div[@class='table-status-item-id']/span").text.strip()
+ self.first_row_checkBox_element = self.driver.find_element(By.XPATH, "//div[contains(@class, 'MuiDataGrid-row--firstVisible')]//input[@class='PrivateSwitchBase-input css-1m9pwf3']")
+ # self.first_row_ID_content = first_row.find_element(By.XPATH, "//div[@class='table-status-item-id']/span").text.strip()
# print(map_header_className)
# print("first_row=", first_row.text)
# 需要提取ID、Name 信息
- first_row_id_content = first_row.find_element(By.XPATH, "//div[@class='table-status-item-id']//span").text.strip()
+ # first_row_id_content = first_row.find_element(By.XPATH, "//div[@class='table-status-item-id']//span").text.strip()
#first_row_VsysID_class = map_header_className["Vsys ID"]
#first_row_VsysID_content = first_row.find_element(By.XPATH, f"//td[contains(@class, '{first_row_VsysID_class}')]//div").text.strip()
- first_row_Name_class = map_header_className["Name"]
- first_row_Name_content = first_row.find_element(By.XPATH, f"//td[contains(@class, '{first_row_Name_class}')]//p").text.strip()
- search_dict = {"ID": first_row_id_content, "Name": first_row_Name_content}
+ first_row_Name_content = self.driver.find_element(By.XPATH, "//div[contains(@class, 'MuiDataGrid-row--firstVisible')]//div[@data-field='name']").text.strip()
+
+ search_dict = {"Name": first_row_Name_content}
print("first_row=", search_dict)
search_key = list(kwargs.keys())[0]
pytest_check.is_in(kwargs[search_key], search_dict[search_key],
msg="所在行数{}".format(inspect.currentframe().f_lineno))
# # 不同操作后的断言,创建后、修改后、无断言
- # if require_assertion == 1: # 直接创建后,使用的断言
- # pytest_check.equal(first_row_Name_content, self.random_name, msg="所在行数{}".format(inspect.currentframe().f_lineno))
- # elif require_assertion == 2 and data["model"].strip().lower() == "modify": # 修改数据后,使用的断言
- # pytest_check.equal(first_row_Name_content, self.random_name, msg="所在行数{}".format(inspect.currentframe().f_lineno))
- # else: # 不适用断言
- # pass
+ if require_assertion == 1: # 直接创建后,使用的断言
+ pytest_check.equal(first_row_Name_content, self.random_name, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ elif require_assertion == 2 and data["model"].strip().lower() == "modify": # 修改数据后,使用的断言
+ pytest_check.equal(first_row_Name_content, self.random_name, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ else: # 不适用断言
+ pass
# 强制点击清空查询按钮
- element_clear = self.driver.find_element(By.ID, listPage_profileSearch_tcpProxyProfiles_buttonClear_posId)
- self.driver.execute_script("arguments[0].click()", element_clear) # 强制点击
+ # element_clear = self.driver.find_element(By.XPATH, listPage_profileSearch_tcpProxyProfiles_buttonClear_posId)
+ # self.driver.execute_script("arguments[0].click()", element_clear) # 强制点击
return search_dict
def _column_setting(self, column: (), column_flags=0):
@@ -543,11 +548,9 @@ class TcpProxyProfiles:
# 打开该列表
self._goto_subProfilePage()
profiles = "advanced"
- column_click = column[2:]
- current_column = self.profiles_po.column_setting(mainPage_profileColumn_columnSetting_posId,
- listPage_profileColumn_tcpProxyProfiles_button_columnAll_posXpath,
- listPage_profileColumn_tcpProxyProfiles_button_cancel_posId,
- listPage_profileColumn_tcpProxyProfiles_button_ok_posId,
+ column_click = column[1:]
+ current_column = self.profiles_po.column_setting(mainpage_profile_column_setting_posxpath,
+ listpage_profile_column_tcp_proxy_profiles_button_column_all_posxpath,
profiles,
column_flags, column_click)
pytest_check.equal(current_column, column, msg="所在行数{}".format(inspect.currentframe().f_lineno))
@@ -571,10 +574,10 @@ class TcpProxyProfiles:
:return:
"""
self._goto_subProfilePage()
- header_content = self.profiles_po.language_change(mainPage_language_change_posXpath,
- mainPage_language_chinese_posXpath,
- mainPage_language_russian_posXpath,
- mainPage_language_english_posXpath, language)
+ header_content = self.profiles_po.language_change(mainpage_language_change_posxpath,
+ mainpage_language_dropdown_item_posxpath.format(replace_language='中文'),
+ mainpage_language_dropdown_item_posxpath.format(replace_language='Русский'),
+ mainpage_language_dropdown_item_posxpath.format(replace_language='English'), language)
# 断言
time.sleep(2)
if language == 0:
@@ -609,7 +612,7 @@ class TcpProxyProfiles:
if c_type == "Mvsys" and f_type == "Tvsys": # Mvsys查看下级Tvsys数据
if c_supervisor == "open": # Mvsys开启监督模式,可查看下级Tvsys数据
self.first_row_checkBox_element.click() # 变量来自查询函数
- self.profiles_po.data_limit(listPage_profile_tcpProxyProfiles_editButton_posId,
+ self.profiles_po.data_limit(listpage_profile_tcp_proxy_profiles_edit_button_posxpath,
listPage_profile_tcpProxyProfiles_delButton_posId)
elif c_supervisor == "close": # Mvsys关闭监督模式,不可查看下级Tvsys数据
pytest_check.equal(result, 0, msg="所在行数{}".format(inspect.currentframe().f_lineno))
@@ -624,7 +627,7 @@ class TcpProxyProfiles:
:return:
"""
self.first_row_checkBox_element.click()
- self.driver.find_element(By.ID, listPage_profile_tcpProxyProfiles_editButton_posId).click()
+ self.driver.find_element(By.ID, listpage_profile_tcp_proxy_profiles_edit_button_posxpath).click()
time.sleep(2)
self.driver.find_element(By.XPATH, "//div[@class='audit_log']/span").click()
# 第一条记录勾选框
@@ -636,9 +639,9 @@ class TcpProxyProfiles:
# 获取 operation content
current_operation = self.driver.find_element(By.XPATH, "//div[@class='compare-code-title']//div[3]/div[2]").text.strip()
pytest_check.equal(current_operation, operation, msg="所在行数{}".format(inspect.currentframe().f_lineno))
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_cancel_posCss).click()
- if self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).is_displayed():
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).click()
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_cancel_posCss).click()
+ if self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).is_displayed():
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).click()
def _policy_create(self, profile_name):
# 进入Intercept列表页
@@ -732,8 +735,8 @@ class TcpProxyProfiles:
#data_vsysid = self.driver.find_element(By.XPATH, f"//div[contains(@class,'ly-table1')]//tbody/tr[{i+1}]/td[2]/div[@class='cell']//div").text.strip()
# print("data_vsysid=", data_vsysid)
# 校验当前数据是否为只能查看
- text_view = self.driver.find_element(By.ID, listPage_profile_tcpProxyProfiles_editButton_posId).text.strip()
- class_view = self.driver.find_element(By.ID, listPage_profile_tcpProxyProfiles_editButton_posId).get_attribute("class")
+ text_view = self.driver.find_element(By.ID, listpage_profile_tcp_proxy_profiles_edit_button_posxpath).text.strip()
+ class_view = self.driver.find_element(By.ID, listpage_profile_tcp_proxy_profiles_edit_button_posxpath).get_attribute("class")
# print("text_view=", text_view)
if i == 0:
pytest_check.equal(text_view, "Edit", msg="所在行数{}".format(inspect.currentframe().f_lineno))
@@ -753,7 +756,7 @@ class TcpProxyProfiles:
isExist_lock = self.driver.element_isExist(By.XPATH , "//i[@class='iconfont icon-lock']")
assert isExist_lock
# 校验是否有内置标识
- isExist_builtin = self.driver.element_isExist(By.CSS_SELECTOR, ".icon > use")
+ isExist_builtin = self.driver.element_isExist(By.XPATH, ".icon > use")
print("test=", isExist_builtin)
assert isExist_builtin
print("test=", self.driver.find_element(By.XPATH, f"//tr[{i+1}]//span[contains(@class,'el-checkbox__input')]"))
@@ -779,7 +782,7 @@ class TcpProxyProfiles:
print("开始校验create页面元素...")
pytest_check.equal(create_page_header_except, create_page_headr_actual, msg="所在行数{}".format(inspect.currentframe().f_lineno))
# 点击 cancel 按钮
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_cancel_posCss).click()
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_cancel_posCss).click()
# 检验edit 页面元素
tmp_name = self._create(data)
time.sleep(3)
@@ -788,13 +791,13 @@ class TcpProxyProfiles:
return 0
#点击勾选第一行选择框
self.first_row_checkBox_element.click() #变量来自查询函数
- self.driver.find_element(By.ID, listPage_profile_tcpProxyProfiles_editButton_posId).click() #打开edit页面
+ self.driver.find_element(By.ID, listpage_profile_tcp_proxy_profiles_edit_button_posxpath).click() #打开edit页面
print("开始校验edit页面元素...")
edit_page_header_except = "Edit TCP Proxy Profile"
edit_page_headr_actual = self.driver.find_element(By.XPATH, tcpProxyProfiles_headerTitle_posXpath).text.strip()
pytest_check.equal(edit_page_header_except, edit_page_headr_actual, msg="所在行数{}".format(inspect.currentframe().f_lineno))
# 点击 cancel 按钮
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_cancel_posCss).click()
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_cancel_posCss).click()
self._query(data, require_assertion=0, Name=tmp_name)
self._del() #删除数据
@@ -853,24 +856,25 @@ class TcpProxyProfiles:
:param link_list_dict:
:return:
"""
- try:
- tmp_name = self._create(data)
- time.sleep(3)
- search_dict = self._query(data, require_assertion=0, Name=tmp_name)
- # 勾选第一行
- self.first_row_checkBox_element.click()
- # 调用公共的link创建逻辑
- Des_ID_list, Request_ID, Sou_ID_list = self.profiles_po.linkdata(link_list_dict,
- listPage_profile_tcpProxyProfiles_linkButton_posId,
- listPage_linkTips_tcpProxyProfiles_button_save_posXpath,
- listPage_linkTips_tcpProxyProfiles_button_add_posXpath,
- listPage_linkTips_tcpProxyProfiles_button_OK_posXpath)
+ tmp_name = self._create(data)
+ time.sleep(3)
+ search_dict = self._query(data, require_assertion=0, Name=tmp_name)
+ # 勾选第一行
+ self.first_row_checkBox_element.click()
+ # 调用公共的link创建逻辑
+ Des_ID_list, Request_ID, Sou_ID_list = self.profiles_po.linkdata(link_list_dict,
+ listPage_profile_tcpProxyProfiles_linkButton_posId,
+ listPage_linkTips_tcpProxyProfiles_button_save_posXpath,
+ listPage_linkTips_tcpProxyProfiles_button_add_posXpath,
+ listPage_linkTips_tcpProxyProfiles_button_OK_posXpath)
+
+ try:
self._query(data, require_assertion=1, ID=search_dict["ID"])
# 点击勾选第一行选择框
self.first_row_checkBox_element.click() # 变量来自查询函数
time.sleep(1)
- self.driver.find_element(By.ID, listPage_profile_tcpProxyProfiles_editButton_posId).click()
+ self.driver.find_element(By.ID, listpage_profile_tcp_proxy_profiles_edit_button_posxpath).click()
# save data
src_val_dict = self._get_value_dict(data)
print("src_val_dict ======== ", src_val_dict)
@@ -887,7 +891,7 @@ class TcpProxyProfiles:
# 点击勾选第一行选择框
self.first_row_checkBox_element.click() # 变量来自查询函数
time.sleep(1)
- self.driver.find_element(By.ID, listPage_profile_tcpProxyProfiles_editButton_posId).click()
+ self.driver.find_element(By.ID, listpage_profile_tcp_proxy_profiles_edit_button_posxpath).click()
# save data
des_val_dict = self._get_value_dict(data)
print("des_val_dict ======== ", des_val_dict)
@@ -903,7 +907,7 @@ class TcpProxyProfiles:
# 点击勾选第一行选择框
self.first_row_checkBox_element.click() # 变量来自查询函数
time.sleep(1)
- self.driver.find_element(By.ID, listPage_profile_tcpProxyProfiles_editButton_posId).click()
+ self.driver.find_element(By.ID, listpage_profile_tcp_proxy_profiles_edit_button_posxpath).click()
# save data
sou_value_dict = self._get_value_dict(data)
print("sou_value_dict ======== ", sou_value_dict)
@@ -917,7 +921,8 @@ class TcpProxyProfiles:
# 判断是否一致
self.profiles_po.dicts_are_equal(sou_value_dict, update_one_value_dict, update_two_value_dict)
except Exception as e:
- assert e
+ print("Exception ============", e)
+ raise e
finally:
self._goto_tcp_proxy_page()
self._delete_des(Des_ID_list, data) # 删除数据
@@ -925,6 +930,7 @@ class TcpProxyProfiles:
self.profiles_po._del_policy_links(Request_ID)
# 删除源vsys数据
self._delete_sou(Sou_ID_list, data)
+
@screenshot_on_failure
def chk_lnk_butin_data_case(self, data, link_list_dict):
# link 源数据修改测试
@@ -947,7 +953,7 @@ class TcpProxyProfiles:
self._query(data, require_assertion=0, ID=ran_ele)
# 勾选第一行
self.first_row_checkBox_element.click()
- self.driver.find_element(By.ID, listPage_profile_tcpProxyProfiles_editButton_posId).click()
+ self.driver.find_element(By.ID, listpage_profile_tcp_proxy_profiles_edit_button_posxpath).click()
# save src data
rev_data = self._get_value_dict(data)
print("rev_data ============ " , rev_data)
@@ -975,7 +981,7 @@ class TcpProxyProfiles:
# 点击勾选第一行选择框
self.first_row_checkBox_element.click() # 变量来自查询函数
time.sleep(1)
- self.driver.find_element(By.ID, listPage_profile_tcpProxyProfiles_editButton_posId).click()
+ self.driver.find_element(By.ID, listpage_profile_tcp_proxy_profiles_edit_button_posxpath).click()
# save data
des_val_dict = self._get_value_dict(data)
print("des_val_dict ======== ", des_val_dict)
@@ -991,7 +997,7 @@ class TcpProxyProfiles:
# 点击勾选第一行选择框
self.first_row_checkBox_element.click() # 变量来自查询函数
time.sleep(1)
- self.driver.find_element(By.ID, listPage_profile_tcpProxyProfiles_editButton_posId).click()
+ self.driver.find_element(By.ID, listpage_profile_tcp_proxy_profiles_edit_button_posxpath).click()
# save data
sou_value_dict = self._get_value_dict(data)
print("sou_value_dict ======== ", sou_value_dict)
@@ -1000,7 +1006,7 @@ class TcpProxyProfiles:
Request_ID = self.profiles_po.click_pol_lnk_sync(Request_ID)
time.sleep(3)
#
- Request_ID, update_one_value_dict, update_two_value_dict = self.chk_des_del_lnk_data(Des_ID_list, Request_ID,
+ Request_ID, update_one_value_dict, update_two_value_dict = self._mod_des_chk_syc(Des_ID_list, Request_ID,
link_list_dict, data,)
# 删除policy links记录
self.profiles_po._del_policy_links(Request_ID)
@@ -1009,12 +1015,13 @@ class TcpProxyProfiles:
# 判断是否一致
self.profiles_po.dicts_are_equal(sou_value_dict, update_one_value_dict, update_two_value_dict)
except Exception as e:
- print(e)
+ print("Exception ============", e)
+ raise e
finally:
- print("recover sou data ============= please wait")
- self._rev_sou(data, rev_data, ran_ele)
print("recover des data ============= please wait")
self._rev_des(data, rev_data, ran_ele, link_list_dict)
+ print("recover sou data ============= please wait")
+ self._rev_sou(data, rev_data, ran_ele)
@screenshot_on_failure
@@ -1032,7 +1039,7 @@ class TcpProxyProfiles:
# 点击勾选第一行选择框
self.first_row_checkBox_element.click() # 变量来自查询函数
time.sleep(1)
- self.driver.find_element(By.ID, listPage_profile_tcpProxyProfiles_editButton_posId).click()
+ self.driver.find_element(By.ID, listpage_profile_tcp_proxy_profiles_edit_button_posxpath).click()
update_one_value_dict = self._get_value_dict(data)
# modify des data
self._query(data, vsys_name_2=link_list_dict[link_index]["link_dst_vsys"], require_assertion=0, ID=Des_ID_list[0])
@@ -1073,7 +1080,7 @@ class TcpProxyProfiles:
# 点击勾选第一行选择框
self.first_row_checkBox_element.click() # 变量来自查询函数
time.sleep(1)
- self.driver.find_element(By.ID, listPage_profile_tcpProxyProfiles_editButton_posId).click()
+ self.driver.find_element(By.ID, listpage_profile_tcp_proxy_profiles_edit_button_posxpath).click()
update_two_value_dict = self._get_value_dict(data)
time.sleep(3)
@@ -1105,7 +1112,7 @@ class TcpProxyProfiles:
self._query(data, require_assertion=1, ID=ran_ele)
self.first_row_checkBox_element.click()
time.sleep(1)
- self.driver.find_element(By.ID, listPage_profile_tcpProxyProfiles_editButton_posId).click()
+ self.driver.find_element(By.ID, listpage_profile_tcp_proxy_profiles_edit_button_posxpath).click()
self._rev_data(rev_data)
def _rev_des(self, data, rev_data, ran_ele, link_list_dict):
@@ -1117,13 +1124,12 @@ class TcpProxyProfiles:
passwd=link_list_dict[link_index]["passwd"])
profile_public = ProfilesPublicOperations(self.driver)
profile_public.change_vsys(vsys_name=link_list_dict[link_index]["link_dst_vsys"])
-
- self._goto_tcp_proxy_page()
- self._query(data, vsys_name_2=link_list_dict[link_index]["link_dst_vsys"], require_assertion=1, ID=ran_ele)
- self.first_row_checkBox_element.click()
- time.sleep(1)
- self.driver.find_element(By.ID, listPage_profile_tcpProxyProfiles_editButton_posId).click()
- self._rev_data(rev_data)
+ self._goto_tcp_proxy_page()
+ self._query(data, vsys_name_2=link_list_dict[link_index]["link_dst_vsys"], require_assertion=1, ID=ran_ele)
+ self.first_row_checkBox_element.click()
+ time.sleep(1)
+ self.driver.find_element(By.ID, listpage_profile_tcp_proxy_profiles_edit_button_posxpath).click()
+ self._rev_data(rev_data)
def _rev_data(self, value_dict):
"""
@@ -1145,86 +1151,87 @@ class TcpProxyProfiles:
's_UserTimeout_switch': 'true',
's_userTimeout': '600'}
"""
- self.driver.find_element(By.ID, tcpProxyProfiles_input_Name_posId).clear()
- self.driver.find_element(By.ID, tcpProxyProfiles_input_Name_posId).send_keys(value_dict['name'])
+ self.driver.find_element(By.ID, tcp_proxy_profiles_input_name_posxpath).clear()
+ self.driver.find_element(By.ID, tcp_proxy_profiles_input_name_posxpath).send_keys(value_dict['name'])
self._operate_switch_rec(value_dict["enable_TCP_passthrough"],
- tcpProxyProfiles_switch_enableTCPPassthrough_posXpath)
+ tcp_proxy_profiles_switch_enable_tcp_passthrough_posxpath)
self._operate_switch_rec(value_dict["c_override_MSS"],
- tcpProxyProfiles_switch_clientOverrideMSS_posXpath)
+ tcp_proxy_profiles_switch_server_override_mss_posxpath)
if value_dict["c_override_MSS"]:
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_clientOverrideMSS_posXpath).clear()
+ tcp_proxy_profiles_input_client_override_mss_posxath).clear()
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_clientOverrideMSS_posXpath).send_keys(value_dict['c_override_MSS'])
+ tcp_proxy_profiles_input_client_override_mss_posxath).send_keys(value_dict['c_override_MSS'])
self._operate_switch_rec(value_dict["c_no_delay"],
- tcpProxyProfiles_switch_clientNoDelay_posXpath)
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientTTL_posXpath).clear()
- self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientTTL_posXpath).send_keys(value_dict['c_ttl'])
+ tcp_proxy_profiles_switch_client_nodelay_posxpath)
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_ttl_posxpath).clear()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_ttl_posxpath).send_keys(value_dict['c_ttl'])
self._operate_switch_rec(value_dict["c_keepalive"],
- tcpProxyProfiles_switch_clientKeepalive_posXpath)
+ tcp_proxy_profiles_switch_client_keepalive_posxpath)
if value_dict["c_keepalive"]:
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_clientProbeNumber_posXpath).clear()
+ tcp_proxy_profiles_input_client_probe_number_posxpath).clear()
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_clientProbeNumber_posXpath).send_keys(value_dict['c_probe_number'])
+ tcp_proxy_profiles_input_client_probe_number_posxpath).send_keys(value_dict['c_probe_number'])
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_clientIdleTime_posXpath).clear()
+ tcp_proxy_profiles_input_client_idle_time_posxpath).clear()
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_clientIdleTime_posXpath).send_keys(value_dict['c_idle_time'])
+ tcp_proxy_profiles_input_client_idle_time_posxpath).send_keys(value_dict['c_idle_time'])
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_clientInterval_posXpath).clear()
+ tcp_proxy_profiles_input_client_interval_posxpath).clear()
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_clientInterval_posXpath).send_keys(value_dict['c_interval'])
+ tcp_proxy_profiles_input_client_interval_posxpath).send_keys(value_dict['c_interval'])
self._operate_switch_rec(value_dict["c_UserTimeout_switch"],
- tcpProxyProfiles_switch_clientUserTimeout_posXpath)
+ tcp_proxy_profiles_switch_client_user_timeout_posxpath)
if value_dict["c_UserTimeout_switch"]:
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_clientUserTimeout_posXpath).clear()
+ tcp_proxy_profiles_input_client_user_timeout_posxpath).clear()
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_clientUserTimeout_posXpath).send_keys(value_dict['c_userTimeout'])
+ tcp_proxy_profiles_input_client_user_timeout_posxpath).send_keys(value_dict['c_userTimeout'])
self._operate_switch_rec(value_dict["s_override_MSS"],
- tcpProxyProfiles_switch_serverOverrideMSS_posXpath)
+ tcp_proxy_profiles_switch_server_override_mss_posxpath)
self._operate_switch_rec(value_dict["s_no_delay"],
- tcpProxyProfiles_switch_serverNoDelay_posXpath)
+ tcp_proxy_profiles_switch_server_nodelay_posxpath)
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_serverTTL_posXpath).clear()
+ tcp_proxy_profiles_input_server_ttl_posxpath).clear()
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_serverTTL_posXpath).send_keys(value_dict['s_ttl'])
+ tcp_proxy_profiles_input_server_ttl_posxpath).send_keys(value_dict['s_ttl'])
self._operate_switch_rec(value_dict["s_keepalive"],
- tcpProxyProfiles_switch_serverKeepalive_posXpath)
+ tcp_proxy_profiles_switch_server_keepalive_posxpath)
if value_dict["s_keepalive"]:
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_serverProbeNumber_posXpath).clear()
+ tcp_proxy_profiles_input_server_probe_number_posxpath).clear()
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_serverProbeNumber_posXpath).send_keys(value_dict['s_probe_number'])
+ tcp_proxy_profiles_input_server_probe_number_posxpath).send_keys(value_dict['s_probe_number'])
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_serverIdleTime_posXpath).clear()
+ tcp_proxy_profiles_input_server_idle_time_posxpath).clear()
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_serverIdleTime_posXpath).send_keys(value_dict['s_idle_time'])
+ tcp_proxy_profiles_input_server_idle_time_posxpath).send_keys(value_dict['s_idle_time'])
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_serverInterval_posXpath).clear()
+ tcp_proxy_profiles_input_server_interval_posxpath).clear()
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_serverInterval_posXpath).send_keys(value_dict['s_interval'])
+ tcp_proxy_profiles_input_server_interval_posxpath).send_keys(value_dict['s_interval'])
self._operate_switch_rec(value_dict["s_UserTimeout_switch"],
- tcpProxyProfiles_switch_serverUserTimeout_posXpath)
+ tcp_proxy_profiles_switch_server_user_timeout_posxpath)
if value_dict["s_UserTimeout_switch"]:
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_serverUserTimeout_posXpath).clear()
+ tcp_proxy_profiles_input_server_user_timeout_posxpath).clear()
self.driver.find_element(By.XPATH,
- tcpProxyProfiles_input_serverUserTimeout_posXpath).send_keys(value_dict['s_userTimeout'])
+ tcp_proxy_profiles_input_server_user_timeout_posxpath).send_keys(value_dict['s_userTimeout'])
# 点击 OK
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_oK_posCss).click()
- time.sleep(1)
- if self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).is_displayed():
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_warningSaveYes_posCss).click()
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_button_ok_posxpath).click()
+ time.sleep(0.5)
+ if self.driver.element_isExist(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss):
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_warningSaveYes_posCss).click()
+ time.sleep(0.5)
def _operate_switch_rec(self, switch_value="", element_position=""):
"""
@@ -1262,7 +1269,7 @@ class TcpProxyProfiles:
"//div[@class='el-checkbox-group']//span[@class='el-checkbox__input']/span[@class='el-checkbox__inner']").click()
# 确认删除
self.driver.find_element(By.XPATH, "//p[normalize-space(text())='Delete']").click()
- self.driver.find_element(By.CSS_SELECTOR, listPage_dialogTips_tcpProxyProfiles_button_yes_posCss).click()
+ self.driver.find_element(By.XPATH, listpage_dialog_tips_tcp_proxy_profiles_button_yes_posxpath).click()
def _delete_source(self, Sou_ID_list, data):
self.driver.find_element(By.ID, 'select-label').click()
@@ -1275,12 +1282,12 @@ class TcpProxyProfiles:
"//div[@class='el-checkbox-group']//span[@class='el-checkbox__input']/span[@class='el-checkbox__inner']").click()
# 确认删除
self.driver.find_element(By.XPATH, "//p[normalize-space(text())='Delete']").click()
- self.driver.find_element(By.CSS_SELECTOR, listPage_dialogTips_tcpProxyProfiles_button_yes_posCss).click()
+ self.driver.find_element(By.XPATH, listpage_dialog_tips_tcp_proxy_profiles_button_yes_posxpath).click()
@screenshot_on_failure
def _goto_tcp_proxy_page(self, vsys_name_2=""):
# 菜单操作,定位到ssl_decryption_keyrings列表页
- # self.driver.find_element(By.CSS_SELECTOR, mainPage_navigationBar_logo_posCss).click()
+ # self.driver.find_element(By.XPATH, mainPage_navigationBar_logo_posCss).click()
self.driver.find_element(By.ID, mainPage_firstLevelMenu_profiles_posId).click()
element = self.driver.find_element(By.ID, mainPage_secondLevelMenu_tcpProxyProfiles_posId)
self.driver.execute_script("arguments[0].click()", element) # 强制点击
@@ -1308,55 +1315,55 @@ class TcpProxyProfiles:
"s_userTimeout": "400->不修改",
'''
value_dict = {}
- value_name = self.driver.find_element(By.ID, tcpProxyProfiles_input_Name_posId).get_attribute("value")
+ value_name = self.driver.find_element(By.ID, tcp_proxy_profiles_input_name_posxpath).get_attribute("value")
value_dict['name'] = value_name
- enable_TCP_passthrough = self.driver.find_element(By.XPATH,tcpProxyProfiles_switch_enableTCPPassthrough_posXpath).get_attribute("aria-checked")
+ enable_TCP_passthrough = self.driver.find_element(By.XPATH,tcp_proxy_profiles_switch_enable_tcp_passthrough_posxpath).get_attribute("aria-checked")
value_dict['enable_TCP_passthrough'] = enable_TCP_passthrough
- c_override_MSS = self.driver.find_element(By.XPATH, tcpProxyProfiles_switch_clientOverrideMSS_posXpath).get_attribute("aria-checked")
+ c_override_MSS = self.driver.find_element(By.XPATH, tcp_proxy_profiles_switch_server_override_mss_posxpath).get_attribute("aria-checked")
value_dict['c_override_MSS'] = c_override_MSS
if c_override_MSS:
- c_overrideMSS = self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientOverrideMSS_posXpath).get_attribute("value")
+ c_overrideMSS = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_override_mss_posxath).get_attribute("value")
value_dict['c_overrideMSS'] = c_overrideMSS
- c_no_delay = self.driver.find_element(By.XPATH, tcpProxyProfiles_switch_clientNoDelay_posXpath).get_attribute("aria-checked")
+ c_no_delay = self.driver.find_element(By.XPATH, tcp_proxy_profiles_switch_client_nodelay_posxpath).get_attribute("aria-checked")
value_dict['c_no_delay'] = c_no_delay
- c_ttl = self.driver.find_element(By.XPATH, tcpProxyProfiles_input_clientTTL_posXpath).get_attribute("value")
+ c_ttl = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_ttl_posxpath).get_attribute("value")
value_dict['c_ttl'] = c_ttl
- c_keepalive = self.driver.find_element(By.XPATH, tcpProxyProfiles_switch_clientKeepalive_posXpath).get_attribute("aria-checked")
+ c_keepalive = self.driver.find_element(By.XPATH, tcp_proxy_profiles_switch_client_keepalive_posxpath).get_attribute("aria-checked")
value_dict['c_keepalive'] = c_keepalive
if c_keepalive:
- c_probe_number = self.driver.find_element(By.XPATH,tcpProxyProfiles_input_clientProbeNumber_posXpath).get_attribute("value")
+ c_probe_number = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_probe_number_posxpath).get_attribute("value")
value_dict['c_probe_number'] = c_probe_number
- c_idle_time = self.driver.find_element(By.XPATH,tcpProxyProfiles_input_clientIdleTime_posXpath).get_attribute("value")
+ c_idle_time = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_idle_time_posxpath).get_attribute("value")
value_dict['c_idle_time'] = c_idle_time
- c_interval = self.driver.find_element(By.XPATH,tcpProxyProfiles_input_clientInterval_posXpath).get_attribute("value")
+ c_interval = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_interval_posxpath).get_attribute("value")
value_dict['c_interval'] = c_interval
- c_UserTimeout_switch = self.driver.find_element(By.XPATH,tcpProxyProfiles_switch_clientUserTimeout_posXpath).get_attribute("aria-checked")
+ c_UserTimeout_switch = self.driver.find_element(By.XPATH, tcp_proxy_profiles_switch_client_user_timeout_posxpath).get_attribute("aria-checked")
value_dict['c_UserTimeout_switch'] = c_UserTimeout_switch
if c_UserTimeout_switch:
- c_userTimeout = self.driver.find_element(By.XPATH,tcpProxyProfiles_input_clientUserTimeout_posXpath).get_attribute("value")
+ c_userTimeout = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_client_user_timeout_posxpath).get_attribute("value")
value_dict['c_userTimeout'] = c_userTimeout
- s_override_MSS = self.driver.find_element(By.XPATH,tcpProxyProfiles_switch_serverOverrideMSS_posXpath).get_attribute("aria-checked")
+ s_override_MSS = self.driver.find_element(By.XPATH, tcp_proxy_profiles_switch_server_override_mss_posxpath).get_attribute("aria-checked")
value_dict['s_override_MSS'] = s_override_MSS
- s_no_delay = self.driver.find_element(By.XPATH, tcpProxyProfiles_switch_serverNoDelay_posXpath).get_attribute("aria-checked")
+ s_no_delay = self.driver.find_element(By.XPATH, tcp_proxy_profiles_switch_server_nodelay_posxpath).get_attribute("aria-checked")
value_dict['s_no_delay'] = s_no_delay
- s_ttl = self.driver.find_element(By.XPATH, tcpProxyProfiles_input_serverTTL_posXpath).get_attribute("value")
+ s_ttl = self.driver.find_element(By.XPATH, tcp_proxy_profiles_input_server_ttl_posxpath).get_attribute("value")
value_dict['s_ttl'] = s_ttl
- s_keepalive = self.driver.find_element(By.XPATH,tcpProxyProfiles_switch_serverKeepalive_posXpath).get_attribute("aria-checked")
+ s_keepalive = self.driver.find_element(By.XPATH,tcp_proxy_profiles_switch_server_keepalive_posxpath).get_attribute("aria-checked")
value_dict['s_keepalive'] = s_keepalive
if s_keepalive:
- s_probe_number = self.driver.find_element(By.XPATH,tcpProxyProfiles_input_serverProbeNumber_posXpath).get_attribute("value")
+ s_probe_number = self.driver.find_element(By.XPATH,tcp_proxy_profiles_input_server_probe_number_posxpath).get_attribute("value")
value_dict['s_probe_number'] = s_probe_number
- s_idle_time = self.driver.find_element(By.XPATH,tcpProxyProfiles_input_serverIdleTime_posXpath).get_attribute("value")
+ s_idle_time = self.driver.find_element(By.XPATH,tcp_proxy_profiles_input_server_idle_time_posxpath).get_attribute("value")
value_dict['s_idle_time'] = s_idle_time
- s_interval = self.driver.find_element(By.XPATH,tcpProxyProfiles_input_serverInterval_posXpath).get_attribute("value")
+ s_interval = self.driver.find_element(By.XPATH,tcp_proxy_profiles_input_server_interval_posxpath).get_attribute("value")
value_dict['s_interval'] = s_interval
- s_UserTimeout_switch = self.driver.find_element(By.XPATH,tcpProxyProfiles_switch_serverUserTimeout_posXpath).get_attribute("aria-checked")
+ s_UserTimeout_switch = self.driver.find_element(By.XPATH,tcp_proxy_profiles_switch_server_user_timeout_posxpath).get_attribute("aria-checked")
value_dict['s_UserTimeout_switch'] = s_UserTimeout_switch
if s_UserTimeout_switch:
- s_userTimeout = self.driver.find_element(By.XPATH,tcpProxyProfiles_input_serverUserTimeout_posXpath).get_attribute("value")
+ s_userTimeout = self.driver.find_element(By.XPATH,tcp_proxy_profiles_input_server_user_timeout_posxpath).get_attribute("value")
value_dict['s_userTimeout'] = s_userTimeout
# 点击 OK
- self.driver.find_element(By.CSS_SELECTOR, tcpProxyProfiles_button_cancel_posCss).click()
+ self.driver.find_element(By.XPATH, tcpProxyProfiles_button_cancel_posCss).click()
return value_dict
@@ -1397,16 +1404,121 @@ class TcpProxyProfiles:
def _audit_log_all_operation(self, data):
ran_name = self._create(data)
try:
- time.sleep(0.5)
+ time.sleep(1)
+ profiles_type = "TCP Proxy Profile"
search_dict = self._query(data, Name=ran_name)
+ self._audit_log_operation(profiles_type, search_dict["ID"], operation_type='Create')
+ self._query(data, Name=ran_name)
+ self._audit_log_operation(profiles_type, search_dict["ID"], operation_type='Query Verbose')
+ self._query(data, Name=ran_name)
self._modify(data)
+ self._query(data, Name=ran_name)
+ self._audit_log_operation(profiles_type, search_dict["ID"], operation_type='Edit')
+ self._goto_subProfilePage()
+ self.profiles_po._audit_log_query_list(profiles_type, search_dict["ID"], operation_type='Query List')
+ except Exception as e:
+ raise e
+ finally:
+ self._query(data, Name=ran_name)
+ self._del()
+ self.profiles_po._audit_log_delete(profiles_type, search_dict["ID"], operation_type='Delete')
+
+ def _audit_log_operation(self, profiles_type, search_id, operation_type):
+ # 选中第一行
+ self.first_row_checkBox_element.click()
+ # 点击编辑
+ self.driver.find_element(By.ID, listpage_profile_tcp_proxy_profiles_edit_button_posxpath).click()
+ if operation_type == 'Query Verbose':
+ click_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
+ if operation_type == 'Create':
+ # 创建时间
+ compare_time = self.driver.find_element(By.XPATH,
+ tcp_proxy_profiles_page_create_time_posXpath).text
+ elif operation_type == 'Edit':
+ # 修改时间
+ compare_time = self.driver.find_element(By.XPATH,
+ tcp_proxy_profiles_page_modify_time_posXpath).text
+ # 用户
+ user_name = self.driver.find_element(By.XPATH,
+ "//div[@class='bifang-proxy-id item-content user_name_font']").text
+
+ if operation_type == 'Query Verbose':
+ self.profiles_po.search_compare_item(profiles_type, search_id, operation_type=operation_type,
+ operation_flag=0)
+ else:
+ # 对比 Audit log 详情页
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_page_audit_logs_posXpath).click()
+ self.driver.find_element(By.XPATH, "(//span[@class='el-checkbox__inner'])[2]").click()
+ # 点击 Compare
+ self.driver.find_element(By.XPATH, tcp_proxy_profiles_page_audit_logs_compare_posXpath).click()
+
+ if operation_type == 'Create':
+ self.profiles_po._check_audit_log_detail_page(profiles_type, user_name, search_id, compare_time,
+ operation_flag=0)
+ elif operation_type == 'Edit':
+ self.profiles_po._check_audit_log_detail_page(profiles_type, user_name, search_id, compare_time,
+ operation_flag=1)
+ # 对比系统 audit_log 页
+ self.profiles_po.search_compare_item(profiles_type, search_id, operation_type=operation_type,
+ operation_flag=0)
+ time.sleep(1)
+
+ if operation_type == 'Create':
+ # 点击 Compare 对比
+ self.driver.find_element(By.XPATH,
+ "//button[@class='el-button btn-style el-button--info el-button--mini']/span[normalize-space(text())='Compare']").click()
+ self.driver.find_element(By.ID, list_page_audit_log_search_button_compare_posId).click()
+
+ self.profiles_po._check_audit_log_detail_page(profiles_type, user_name, search_id, compare_time,
+ operation_flag=0)
+ elif operation_type == 'Edit':
+ # 点击 Compare 对比
+ self.driver.find_element(By.XPATH,
+ "//button[@class='el-button btn-style el-button--info el-button--mini']/span[normalize-space(text())='Compare']").click()
+ # 对比 V.1
+ self.driver.find_element(By.XPATH,
+ "(//td[contains(@class, 'is-left el-table-column--selection')])[last()]").click()
+ self.driver.find_element(By.ID, list_page_audit_log_search_button_compare_posId).click()
+ self.profiles_po._check_audit_log_system_page(profiles_type, user_name, search_id, compare_time,
+ operation_flag=1)
+ elif operation_type == 'Query Verbose':
time.sleep(0.5)
+ # 点击 Compare 对比
+ self.driver.find_element(By.XPATH,
+ "(//button[@class='el-button btn-style el-button--info el-button--mini'])[1]").click()
+ self.profiles_po._check_audit_log_detail_page(profiles_type, user_name, search_id, click_time,
+ operation_flag=2)
+
+ def _all_search_fields(self, data):
+ # 新建数据
+ ran_name = self._create(data)
+ # 名字查询
+ search_dict = self._query(data, Name=ran_name)
+ try:
+ # ID 唯一查询
+ self._query(data, ID=search_dict['ID'])
+ # 只有一行记录并且ID一致
+ id_eles = self.driver.find_elements(By.XPATH, "//div[@class='table-status-item-id']")
+ id_ele_lst = [e.text for e in id_eles]
+ pytest_check.equal(len(id_ele_lst), 1, msg="所在行数{}".format(inspect.currentframe().f_lineno))
+ for id_ele in id_ele_lst:
+ pytest_check.equal(id_ele, search_dict['ID'], msg="所在行数{}".format(inspect.currentframe().f_lineno))
+
+ # 名字模糊查询
+ search_name = self.profiles_po.random_substring(ran_name)
+ self._query(data, Name=search_name)
+ # 可以有多行记录都需要包含在名字里面
+ name_eles = self.driver.find_elements(By.XPATH, "//td[contains(@class,'el-table_1_column_2 is-left')]")
+ name_ele_lst = [e.text for e in name_eles]
+ for name_ele in name_ele_lst:
+ pytest_check.equal(search_name in name_ele, True, msg="所在行数{}".format(inspect.currentframe().f_lineno))
except Exception as e:
+ print("Exception ============", e)
raise e
finally:
+ # 删除数据
self._query(data, Name=ran_name)
self._del()
- self.profiles_po.audit_log_view("TCP Proxy Profile", search_dict["ID"])
create = _create
query = _query
@@ -1444,9 +1556,9 @@ if __name__ == '__main__':
)
a.get("http://192.168.44.72")
a.maximize_window()
- a.find_element(By.XPATH,"//*[@id='app']/div/div[1]/div[2]/div[2]/div[1]/div/input").send_keys("AUTO_UI_TEST_KG")
- a.find_element(By.XPATH,"//*[@id='app']/div/div[1]/div[2]/div[2]/div[2]/div/input").send_keys("kongweibin1")
- a.find_element(By.ID,"login").click()
+ a.find_element(By.XPATH, loginpage_username_posxpath).send_keys("AUTO_UI_TEST_KG")
+ a.find_element(By.XPATH, loginpage_passwd_posxpath).send_keys("kongweibin1")
+ a.find_element(By.XPATH, login_page_sign_in_posxpath).click()
time.sleep(2)
# 测试修改数据
r = TcpProxyProfiles(a)
@@ -1455,45 +1567,47 @@ if __name__ == '__main__':
# model=0/1 ====0:单个 1group
# type =IMSI/Phone_Number/IMEI
data= {
- "ids": "创建tcp_proxy_profiles数据后修改enable_tcp_passthrough",
- "model": "modify",
- "enable_TCP_passthrough": "off->on",
- "c_override_MSS": "off->off",
- "c_no_delay": "on->on",
- "c_ttl": "70->90",
- "c_keepalive": "on->on",
- "c_probe_number":"8->20",
- "c_idle_time":"30->70",
- "c_interval":"15->75",
- "c_UserTimeout_switch": "on->on",
- "c_userTimeout":"600->700",
-
- "s_override_MSS": "off->off",
- "s_no_delay": "on->on",
- "s_ttl": "75->100",
- "s_keepalive": "on->on",
- "s_probe_number": "8->20",
- "s_idle_time": "30->70",
- "s_interval": "15->75",
- "s_UserTimeout_switch": "on->on",
- "s_userTimeout": "600->700",
+ "ids": "创建tcp_proxy_profiles数据修改输入内容及开关状态",
+ "model": "modify",
+ "enable_TCP_passthrough": "on->off",
+ "c_override_MSS": "on->不修改",
+ "c_overrideMSS": "536->1000",
+ "c_no_delay": "on->off",
+ "c_ttl": "1->200",
+ "c_keepalive": "on->不修改",
+ "c_probe_number":"1->200",
+ "c_idle_time":"30->6000",
+ "c_interval":"15->70",
+ "c_UserTimeout_switch": "on->不修改",
+ "c_userTimeout":"200->50000",
+
+ "s_override_MSS": "on->不修改",
+ "s_overrideMSS": "1460->600",
+ "s_no_delay": "on->off",
+ "s_ttl": "255->20",
+ "s_keepalive": "on->不修改",
+ "s_probe_number":"222->19",
+ "s_idle_time":"7200->100",
+ "s_interval":"75->30",
+ "s_UserTimeout_switch": "on->不修改",
+ "s_userTimeout": "60000->400"
}
# 测试link
- link_parse = configparser.ConfigParser()
- link_parse_dir = os.path.join(workdir, "config", "linkcluster.ini")
- link_parse.read(link_parse_dir, encoding="utf-8")
- link_list_dict = []
- link_list = [2] # 可取值 1、2、 3、4、5 #这些取值来自linkcluster.ini配置文件
- for i in link_list:
- tmp_dict = {}
- link_index = "link_{}".format(i)
- tmp_dict["link_dst_cluster"] = link_parse.get(link_index, "link_dst_cluster")
- tmp_dict["link_dst_vsys"] = link_parse.get(link_index, "link_dst_vsys")
- tmp_dict["url"] = link_parse.get(link_index, "url")
- tmp_dict["username"] = link_parse.get(link_index, "username")
- tmp_dict["passwd"] = link_parse.get(link_index, "passwd")
- link_list_dict.append(copy.deepcopy(tmp_dict))
- print(link_list_dict)
+ # link_parse = configparser.ConfigParser()
+ # link_parse_dir = os.path.join(workdir, "config", "linkcluster.ini")
+ # link_parse.read(link_parse_dir, encoding="utf-8")
+ # link_list_dict = []
+ # link_list = [2] # 可取值 1、2、 3、4、5 #这些取值来自linkcluster.ini配置文件
+ # for i in link_list:
+ # tmp_dict = {}
+ # link_index = "link_{}".format(i)
+ # tmp_dict["link_dst_cluster"] = link_parse.get(link_index, "link_dst_cluster")
+ # tmp_dict["link_dst_vsys"] = link_parse.get(link_index, "link_dst_vsys")
+ # tmp_dict["url"] = link_parse.get(link_index, "url")
+ # tmp_dict["username"] = link_parse.get(link_index, "username")
+ # tmp_dict["passwd"] = link_parse.get(link_index, "passwd")
+ # link_list_dict.append(copy.deepcopy(tmp_dict))
+ # print(link_list_dict)
""" 传参查考
link_list_dict = [
{
@@ -1505,4 +1619,4 @@ if __name__ == '__main__':
},
]
"""
- r.chk_lnk_butin_data_case(data, link_list_dict=link_list_dict)
+ r.tcp_proxy_profiles_case(data)