diff options
| author | zhz <[email protected]> | 2024-11-19 18:17:05 +0800 |
|---|---|---|
| committer | zhz <[email protected]> | 2024-11-19 18:17:05 +0800 |
| commit | 236b5c587678d8f26abc757a56a74559058b392a (patch) | |
| tree | ce706adf788acf12cdfa2dff10912b3068f30a51 | |
| parent | 9133843ed34e250c37e80849d472d5484e0ae4e8 (diff) | |
dns_record 元素适配
| -rw-r--r-- | cases/profiles/test_dns_records.py | 20 | ||||
| -rw-r--r-- | common/ui_common/profiles/dns_records.py | 522 | ||||
| -rw-r--r-- | common/ui_common/profiles/response_pages.py | 2 |
3 files changed, 344 insertions, 200 deletions
diff --git a/cases/profiles/test_dns_records.py b/cases/profiles/test_dns_records.py index 16e2ff29..121a39a5 100644 --- a/cases/profiles/test_dns_records.py +++ b/cases/profiles/test_dns_records.py @@ -48,18 +48,18 @@ class TestDnsRecords: dnsRecords_name = dnsRecords.create(data) time.sleep(3) dnsRecords.query(data, require_assertion=1, Name=dnsRecords_name) - dnsRecords.audit_log("Create") + # dnsRecords.audit_log("Create") dnsRecords_dict = dnsRecords.query(data, require_assertion=1, Name=dnsRecords_name) dnsRecords.modify(data) time.sleep(2) dnsRecords.check_queryConditions(Name=dnsRecords_name) time.sleep(1) - dnsRecords_dict2 = dnsRecords.query(data, require_assertion=2, ID=dnsRecords_dict["ID"]) - dnsRecords.audit_log("Edit") - dnsRecords.query(data, require_assertion=2, ID=dnsRecords_dict["ID"]) + dnsRecords_dict2 = dnsRecords.query(data, require_assertion=2, UUID=dnsRecords_dict["UUID"]) + # dnsRecords.audit_log("Edit") + dnsRecords.query(data, require_assertion=2, UUID=dnsRecords_dict["UUID"]) dnsRecords.delete() time.sleep(1) - dnsRecords.check_queryConditions(ID=dnsRecords_dict["ID"]) + dnsRecords.check_queryConditions(UUID=dnsRecords_dict["ID"]) #name输入框测试 @pytest.mark.parametrize( @@ -497,11 +497,12 @@ class TestDnsRecords: dnsRecords.delete() #列设置测试 + @pytest.mark.curd def test_column_setting(self,demo_fixture): - column_allname = ["ID", "Vsys ID", "Name", "Type", "Values", "Description", "Reference Count", "Modified Time", "Last Modified By"] - column_requiredname = ["ID", "Name"] - column_defaultname = ["ID", "Name", "Type", "Values", "Description", "Reference Count", "Modified Time", "Last Modified By"] - column_name = ["ID", "Name", "Reference Count", "Last Modified By"] + column_allname = ["Vsys ID", "Name", "UUID", "Type", "Values", "Description", "Usage", "Modified Time", "Last Modified By"] + column_requiredname = ["Name"] + column_defaultname = ["Name", "Type", "Values", "Description", "Usage", "Modified Time", "Last Modified By"] + column_name = ["Name", "Usage", "Last Modified By"] dnsRecords = DnsRecords(demo_fixture) dnsRecords.column_setting(column_defaultname, column_flags=0) dnsRecords.column_setting(column_requiredname, column_flags=1) @@ -514,6 +515,7 @@ class TestDnsRecords: dnsRecords.turn_pages(1) #切换语言测试 + @pytest.mark.curd def test_language_change(self, demo_fixture): dnsRecords = DnsRecords(demo_fixture) dnsRecords.language_change(2) diff --git a/common/ui_common/profiles/dns_records.py b/common/ui_common/profiles/dns_records.py index 44989ed5..03f19542 100644 --- a/common/ui_common/profiles/dns_records.py +++ b/common/ui_common/profiles/dns_records.py @@ -1,6 +1,6 @@ # -*- coding: UTF-8 -*- import time - +import datetime from selenium import webdriver from selenium.common.exceptions import NoSuchElementException from common.driver_common.mywebdriver import MyWebDriver @@ -41,17 +41,18 @@ class DnsRecords: self._search(data, require_assertion=1, Name=self.random_name) #创建后查询 self._modify(data) time.sleep(2) - self._search(data, require_assertion=2, ID=self.first_row_ID_content) # 修改后查询 + self._search(data, require_assertion=2, UUID=self.first_row_uuid_content) # 修改后查询 self._del() #删除数据 - self._check_queryConditions(ID=self.first_row_ID_content) + self._check_queryConditions(UUID=self.first_row_uuid_content) time.sleep(1) @screenshot_on_failure def _goto_subProfilePage(self, vsys_name_2=""): """vsys_name关键字参数弃用""" + 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_dnsRecords_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_dns_records_posxpath).click() @screenshot_on_failure def _goto_vsysPage(self, vsys_name_2=""): @@ -70,55 +71,49 @@ class DnsRecords: self._goto_subProfilePage() #跳转页面 #创建dns record #点击create - self.driver.find_element(By.ID, listPage_profile_dnsRecords_createButton_posId).click() + self.driver.find_element(By.XPATH, listpage_profile_dns_records_create_button_posxpath).click() #在create dns record profile操作 if source_name: self.random_name = source_name[0] - self.driver.find_element(By.ID, dnsRecordsProfilePage_input_Name_posId).send_keys(self.random_name) + self.driver.find_element(By.XPATH, dns_records_profile_page_input_name_posxpath).send_keys(self.random_name) else: self.random_name = self.my_random.random_name() - self.driver.find_element(By.ID, dnsRecordsProfilePage_input_Name_posId).send_keys(self.random_name) #输入名字 + self.driver.find_element(By.XPATH, dns_records_profile_page_input_name_posxpath).send_keys(self.random_name) #输入名字 #判断点击哪种类型 self._select_type(data, model=0) #创建item操作 - create_num = self._ceate_item(data, model=0) + create_num = self._create_item(data, model=0) if create_num == 999: #返回999,直接返回 return 999 #输入description内容 - self.driver.find_element(By.ID, dnsRecordsProfilePage_textArea_Description_posId).send_keys(data["description"].split("->")[0]) + self.driver.find_element(By.XPATH, dns_records_profile_page_text_area_description_posxpath).send_keys(data["description"].split("->")[0]) #点击ok - self.driver.find_element(By.CSS_SELECTOR, dnsRecordsProfilePage_button_oK_posCss).click() - # print("len=", len(self.driver.find_elements(By.XPATH, "//div[@class='list-container']/div/div"))) - # print("len=", len(self.driver.find_elements(By.XPATH, "//div[@class='list-container']/div/child::div"))) - 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']"): + self.driver.find_element(By.XPATH, dns_records_profile_page_button_ok_posxpath).click() + if len(self.random_name) == 0: + print("Name cannot be empty") + pytest_check.equal( + self.driver.find_element(By.XPATH, "//div[@class='MuiFormHelperText-root css-1y20gt9']").text.strip(), + "Name cannot be empty", msg="所在行数{}".format(inspect.currentframe().f_lineno)) + self.driver.find_element(By.XPATH, response_page_button_cancel_posxpath).click() + elif len(self.random_name) < 4 and len(self.random_name) > 0: # name不符合要求 + if self.driver.element_isExist(By.XPATH, "//div[@class='MuiFormHelperText-root css-1y20gt9']"): print("The length of the name is at most 128 characters and cannot be less than 4 characters") - pytest_check.equal( - self.driver.find_element(By.XPATH, "//div[@class='el-form-item__error']").text.strip(), - "The length of the name is at most 128 characters and cannot be less than 4 characters", - msg="所在行数{}".format(inspect.currentframe().f_lineno)) + pytest_check.equal(self.driver.find_element(By.XPATH, + "//div[@class='MuiFormHelperText-root css-1y20gt9']").text.strip(), + "The length of the name is at most 128 characters and cannot be less than 4 characters", + msg="所在行数{}".format(inspect.currentframe().f_lineno)) else: print("name less than 4,no error message") - # 点击取消 - self.driver.find_element(By.CSS_SELECTOR, dnsRecordsProfilePage_button_cancel_posCss).click() - self.driver.find_element(By.CSS_SELECTOR, dnsRecordsProfilePage_button_warningSaveYes_posCss).click() - elif len(self.driver.find_elements(By.XPATH, "//div[@class='list-container']/div/div")) <= 0: - # 点击取消 - print("Value数量为空,创建失败") - pytest_check.equal( - self.driver.find_element(By.XPATH, "//p[contains(.,'The value is empty')]").text.strip(), - "The value is empty", msg="所在行数{}".format(inspect.currentframe().f_lineno)) - self.driver.find_element(By.CSS_SELECTOR, dnsRecordsProfilePage_button_cancel_posCss).click() - self.driver.find_element(By.CSS_SELECTOR, dnsRecordsProfilePage_button_warningSaveYes_posCss).click() - # 数据正确时操作 - elif self.driver.element_isExist(By.CSS_SELECTOR, dnsRecordsProfilePage_button_warningSaveYes_posCss): - # print(self.driver.element_isExist(By.CSS_SELECTOR, dnsRecordsProfilePage_button_warningSaveYes_posCss)) - self.driver.find_element(By.CSS_SELECTOR, dnsRecordsProfilePage_button_warningSaveYes_posCss).click() - if len(data["values"]) > 32: # 超过32个value时,提示无法创建 - warnings_content_actual = self.driver.find_element(By.XPATH, dnsRecordsProfilePage_alertContent_posXpath).text.strip() - print(warnings_content_actual) - warnings_content_except = "INVALID REQUEST:The parameter record Values cannot be empty and can be configured up to 32." - pytest_check.equal(warnings_content_actual, warnings_content_except, msg="所在行数{}".format(inspect.currentframe().f_lineno)) + + # # 数据正确时操作 + # elif self.driver.element_isExist(By.CSS_SELECTOR, dnsRecordsProfilePage_button_warningSaveYes_posCss): + # # print(self.driver.element_isExist(By.CSS_SELECTOR, dnsRecordsProfilePage_button_warningSaveYes_posCss)) + # self.driver.find_element(By.CSS_SELECTOR, dnsRecordsProfilePage_button_warningSaveYes_posCss).click() + # if len(data["values"]) > 32: # 超过32个value时,提示无法创建 + # warnings_content_actual = self.driver.find_element(By.XPATH, dnsRecordsProfilePage_alertContent_posXpath).text.strip() + # print(warnings_content_actual) + # warnings_content_except = "INVALID REQUEST:The parameter record Values cannot be empty and can be configured up to 32." + # pytest_check.equal(warnings_content_actual, warnings_content_except, msg="所在行数{}".format(inspect.currentframe().f_lineno)) return self.random_name def _select_type(self, data, model=0): @@ -131,14 +126,14 @@ class DnsRecords: type: str = data["type"].split("->")[model] #因为modify时,有->表示 type = type.strip().lower() if type == "a": - type_posId = dnsRecordsProfilePage_radioButton_typeA_posId + type_posxpath = dns_records_profile_page_radio_button_typea_posxpath elif type == "aaaa": - type_posId = dnsRecordsProfilePage_radioButton_typeAAAA_posId + type_posxpath = dns_records_profile_page_radio_button_typeaaaa_posxpath else: - type_posId = dnsRecordsProfilePage_radioButton_typeCNAME_posId - self.driver.find_element(By.ID, type_posId).click() + type_posxpath = dns_records_profile_page_radio_button_typecname_posxpath + self.driver.find_element(By.XPATH, type_posxpath).click() - def _ceate_item(self, data, model=0): + def _create_item(self, data, model=0): """ 根据参数,选择创建item的方式,0为创建函数使用。-1为编辑修改函数使用且当type类型和创建时不一样。 :param data: @@ -146,52 +141,57 @@ class DnsRecords: :return: """ items: list = data["values"] - flags = 0 #当一个非空数据时,不点击添加按钮 + # flags = 0 #当一个非空数据时,不点击添加按钮 for i in range(len(items)): + if items[i] == "": + # 点击取消 + pytest_check.equal( + self.driver.element_isExist(By.XPATH,f"{profilePage_alert_topInfo_Xpath}//*[normalize-space(text())='INVALID REQUEST:The parameter record Values cannot be empty and can be configured up to 32.']"), + True, msg="所在行数{}".format(inspect.currentframe().f_lineno)) + print("Value数量为空,创建失败") if items[i].split("->")[model] == "": #modify数据中->左侧为空(创建侧) if len(items) == 1: - self.driver.find_element(By.CSS_SELECTOR, dnsRecordsProfilePage_button_oK_posCss).click() + self.driver.find_element(By.XPATH, dns_records_profile_page_button_ok_posxpath).click() error_posXpath = "//span[normalize-space(text())='' and contains(@class,'content-show')]/ancestor::div[@class='el-form-item__content']//div[@class='el-form-item__error']" pytest_check.equal(self.driver.find_element(By.XPATH, error_posXpath).text.strip(), "Please enter the content", msg="所在行数{}".format(inspect.currentframe().f_lineno)) - item_del_posXpath = dnsRecordsProfilePage_button_delItemByName_posXpath.replace("replaceName", "") - self.driver.find_element(By.XPATH, item_del_posXpath).click() + self.driver.find_element(By.XPATH, dns_records_profile_page_button_del_item_by_name_posxpath).click() continue #判断是否需要点击添加按钮 if items[i].split("->")[model] != "": - flags += 1 #第一个非空标志 - if flags == 1: #遇到第一个非空数据,不用点击 - pass - else: #第二个后续的非空数据,点击添加 - self.driver.find_element(By.ID, dnsRecordsProfilePage_button_addItem_posId).click() + # flags += 1 #第一个非空标志 + # if flags == 1: #遇到第一个非空数据,不用点击 + # pass + # else: #第二个后续的非空数据,点击添加 + self.driver.find_element(By.XPATH, dns_records_profile_page_button_add_item_posxpath).click() #添加item时,text()=空,xpath可以定位到 - if "replaceName" in dnsRecordsProfilePage_input_inputItemName_posXpath: - item_input_posXpath = dnsRecordsProfilePage_input_inputItemName_posXpath.replace("replaceName", "") - else: - raise ValueError(f"replaceName not found in {dnsRecordsProfilePage_input_inputItemName_posXpath}") - # 保存按钮xpath - if "replaceName" in dnsRecordsProfilePage_button_saveItemByName_posXpath: - item_save_posXpath = dnsRecordsProfilePage_button_saveItemByName_posXpath.replace("replaceName", items[i].split("->")[model]) #->修改中会此表标识 - else: - raise ValueError(f"replaceName not found in {dnsRecordsProfilePage_button_saveItemByName_posXpath}") - #输出item、保存、添加下一个 - self.driver.find_element(By.XPATH, item_input_posXpath).send_keys(items[i].split("->")[model]) - self.driver.find_element(By.XPATH, item_save_posXpath).click() + # if "replace_name" in dns_records_profile_page_input_input_item_name_posxpath: + # item_input_posXpath = dns_records_profile_page_input_input_item_name_posxpath.replace("replace_name", "") + # else: + # raise ValueError(f"replace_name not found in {dns_records_profile_page_input_input_item_name_posxpath}") + # # 保存按钮xpath + # if "replace_name" in dns_records_profile_page_button_save_item_by_name_posxpath: + # item_save_posXpath = dns_records_profile_page_button_save_item_by_name_posxpath.replace("replaceName", items[i].split("->")[model]) #->修改中会此表标识 + # else: + # raise ValueError(f"replace_name not found in {dns_records_profile_page_button_save_item_by_name_posxpath}") + #输出item、保存、添加下一个 # TODO + values = items[i].split("->")[model] + for value in values: + self.driver.find_element(By.XPATH, dns_records_profile_page_input_input_item_name_posxpath).send_keys(value) + self.driver.find_element(By.XPATH, dns_records_profile_page_button_save_item_by_name_posxpath).click() if data["values_format"][i].split("->")[model] == "false": - error_posXpath = "//span[normalize-space(text())='replaceName' and contains(@class,'content-show')]/ancestor::div[@class='el-form-item__content']//div[@class='el-form-item__error']" - error_posXpath = error_posXpath.replace("replaceName", items[i].split("->")[model]) - pytest_check.equal(self.driver.find_element(By.XPATH, error_posXpath).text.strip(), "Please enter the correct format", + error_posXpath = "//div[@class='MuiFormHelperText-root css-1y20gt9']" + pytest_check.equal(self.driver.find_element(By.XPATH, error_posXpath).text.strip(), "format error", msg="所在行数{}".format(inspect.currentframe().f_lineno)) - item_del_posXpath = dnsRecordsProfilePage_button_delItemByName_posXpath.replace("replaceName", items[i].split("->")[model]) - self.driver.find_element(By.XPATH, item_del_posXpath).click() - if i >= 1 and data["model"] == "create": # 创建用例时,value中含有重复数据判断使用 - for j in range(i): # 和前面所有的比较,是否有重复 - if items[i].split("->")[0] == items[j].split("->")[0]: - warning_content_actual = self.driver.find_element(By.XPATH, item_save_posXpath).find_element(By.XPATH, "./ancestor::div[contains(@class, 'errmsg-reset')]//div[@class='el-form-item__error']").text.strip() # 获取异常提示信息 - warning_content_expect = "Same item already exists" - print(warning_content_actual) - pytest_check.equal(warning_content_actual, warning_content_expect, msg="所在行数{}".format(inspect.currentframe().f_lineno)) - return 999 + print("输入格式有误") + # if i >= 1 and data["model"] == "create": # 创建用例时,value中含有重复数据判断使用 + # for j in range(i): # 和前面所有的比较,是否有重复 + # if items[i].split("->")[0] == items[j].split("->")[0]: + # warning_content_actual = self.driver.find_element(By.XPATH, item_save_posXpath).find_element(By.XPATH, "./ancestor::div[contains(@class, 'errmsg-reset')]//div[@class='el-form-item__error']").text.strip() # 获取异常提示信息 + # warning_content_expect = "Same item already exists" + # print(warning_content_actual) + # pytest_check.equal(warning_content_actual, warning_content_expect, msg="所在行数{}".format(inspect.currentframe().f_lineno)) + # return 999 def _modify_item(self, data): """ @@ -202,22 +202,22 @@ class DnsRecords: items: list = data["values"] for i in range(len(items)): if items[i].split("->")[-1] == "": #modify数据中->右侧为空(删除此数据) - element_item_del = dnsRecordsProfilePage_button_delItemByName_posXpath.replace("replaceName", items[i].split("->")[0]) + element_item_del = dns_records_profile_page_button_del_item_by_name_posxpath self.driver.find_element(By.XPATH, element_item_del).click() continue if items[i].split("->")[-1] == "不修改": #modify数据中->右侧为不修改(不修改此数据) continue if items[i].split("->")[0] == "": #modify数据中->左侧为空(创建的数据为空,直接添加item) - self.driver.find_element(By.ID, dnsRecordsProfilePage_button_addItem_posId).click() #点击添加按钮 + self.driver.find_element(By.XPATH, dns_records_profile_page_button_add_item_posxpath).click() #点击添加按钮 # 添加item时,text()=空,xpath可以定位到 - item_input_posCss = dnsRecordsProfilePage_input_inputItemName_posXpath.replace("replaceName", "") - item_save_posCss = dnsRecordsProfilePage_button_saveItemByName_posXpath.replace("replaceName", items[i].split("->")[-1]) # ->修改中会此表标识 + item_input_posCss = dns_records_profile_page_input_input_item_name_posxpath.replace("replaceName", "") + item_save_posCss = dns_records_profile_page_button_save_item_by_name_posxpath.replace("replaceName", items[i].split("->")[-1]) # ->修改中会此表标识 # 输入item,保存 self.driver.find_element(By.XPATH, item_input_posCss).send_keys(items[i].split("->")[-1]) self.driver.find_element(By.XPATH, item_save_posCss).click() if "reverse_case" in data.keys(): if data["reverse_case"] == "samefrommodify": # 修改用例时,value中含有重复数据判断使用 - values_div_el = self.driver.find_elements(By.XPATH, dnsRecordsProfilePage_Values_divItem_posXpath) + values_div_el = self.driver.find_elements(By.XPATH, dns_records_profile_page_values_div_item_posxpath) if len(values_div_el) > 0: for value_one in values_div_el: print(value_one.text.strip()) @@ -232,12 +232,17 @@ class DnsRecords: break continue #直接编辑item项内容,在原有的item中编辑值 - item_edit_posCss = dnsRecordsProfilePage_button_editItemByName_posXpath.replace("replaceName", items[i].split("->")[0]) - item_input_posCss = dnsRecordsProfilePage_input_inputItemName_posXpath.replace("replaceName", items[i].split("->")[0]) - self.driver.find_element(By.XPATH, item_edit_posCss).click() - self.driver.find_element(By.XPATH, item_input_posCss).clear() - self.driver.find_element(By.XPATH, dnsRecordsProfilePage_input_inputItemName_posXpath.replace("replaceName", "")).send_keys(items[i].split("->")[-1]) - self.driver.find_element(By.XPATH, dnsRecordsProfilePage_button_saveItemByName_posXpath.replace("replaceName", items[i].split("->")[-1])).click() + # item_edit_posCss = dns_records_profile_page_button_edit_item_by_name_posxpath + # item_input_posCss = dns_records_profile_page_input_input_item_name_posxpath + # self.driver.find_element(By.XPATH, item_edit_posCss).click() + # self.driver.find_element(By.XPATH, item_input_posCss).clear() + # 点击删除在重新新增一个 + self.driver.find_element(By.XPATH, dns_records_profile_page_button_del_item_by_name_posxpath).click() + self.driver.find_element(By.XPATH, dns_records_profile_page_button_add_item_posxpath).click() + values = items[i].split("->")[-1] + for value in values: + self.driver.find_element(By.XPATH, dns_records_profile_page_input_input_item_name_posxpath).send_keys(value) + self.driver.find_element(By.XPATH, dns_records_profile_page_button_save_item_by_name_posxpath).click() @screenshot_on_failure def listPageBottom_allSelect(self): @@ -287,10 +292,10 @@ class DnsRecords: #打开该列表 self._goto_subProfilePage(vsys_name_2=vsys_name_2) #first_row查询到的第一行内容。map_header_className为需要使用的到字典,用来提取第一行的结果。 - result = self.profiles_po.query(listPage_profileSearch_dnsRecords_selectLabel_posId, listPage_profileSearch_dnsRecords_dropDown_item_posXpath, - listPage_profileSearch_dnsRecords_input_itemContent_posXpath, listPage_profileSearch_dnsRecords_buttonSearch_posId, - listPage_profilTable_dnsRecords_tableTbody_posXpath, listPage_profilTable_dnsRecords_tableHeader_posXpath, - listPage_profileSearch_subProfiles_dropDown_typeItem_posXpath=listPage_profileSearch_dnsRecords_dropDown_typeItem_posXpath, **kwargs) + result = self.profiles_po.query(listpage_profile_search_dns_records_select_label_posxpath, listpage_profile_search_dns_records_drop_down_item_posxpath, + listpage_profile_search_dns_records_input_item_content_posxpath, listpage_profile_search_dns_records_button_search_posxpath, + listpage_profile_table_dns_records_table_tbody_posxpath, listpage_profile_table_dns_records_table_header_posxpath, + listPage_profileSearch_subProfiles_dropDown_typeItem_posXpath=listpage_profile_search_dns_records_drop_down_item_posxpath, **kwargs) if result == [0, 0]: return 0 else: @@ -329,22 +334,24 @@ class DnsRecords: first_row = rows[0] """ #第一行的勾选定位,给修改、删除使用 - 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() - first_row_id_content = first_row.find_element(By.XPATH, "//div[@class='table-status-item-id']//span").text.strip() + self.first_row_checkBox_element = first_row.find_element(By.XPATH, "//input[@class='MuiCheckbox-input css-1jj0cvj']") + column_allname = ["Vsys ID", "UUID", "Name", "Type", "Values", "Description", "Usage", "Modified Time", "Last Modified By"] + self._column_setting_help(column_allname, column_flags=2) + self.first_row_uuid_content = self.driver.find_element(By.XPATH, "//div[@data-field='uuid' and @data-colindex=3]").text.strip() + first_row_uuid_content = self.driver.find_element(By.XPATH, "//div[@data-field='uuid' and @data-colindex=3]").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}')]//span").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.strip() - first_row_Values_class = map_header_className["Values"] - first_row_Values_contents = first_row.find_elements(By.XPATH, f"//td[contains(@class, '{first_row_Values_class}')]//span//span") + # first_row_Name_class = map_header_className["Name"] + first_row_Name_content = self.driver.find_element(By.XPATH, f"//div[@data-field='name' and @data-colindex=4]").text.strip() + # first_row_Type_class = map_header_className["Type"] + first_row_Type_content = self.driver.find_element(By.XPATH, f"//div[@data-field='type' and @data-colindex=5]").text.strip() + # first_row_Values_class = map_header_className["Values"] + first_row_Values_contents = self.driver.find_elements(By.XPATH, f"//div[@data-field='Vales' and @data-colindex=6]") values_list = [] for value in first_row_Values_contents: values_list.append(value.text.strip()) - print(first_row_id_content, first_row_Name_content, first_row_Type_content, values_list) - search_dict = {"ID": first_row_id_content, "Name": first_row_Name_content} + print(first_row_uuid_content, first_row_Name_content, first_row_Type_content, values_list) + search_dict = {"UUID": first_row_uuid_content, "Name": first_row_Name_content} #不同操作后的断言,创建后、修改后、无断言 if require_assertion == 1: #直接创建后,使用的断言 create_values_list = [i.split("->")[0] for i in data["values"] if i.split("->")[0] != ""] # 兼容modify中->的标识值 @@ -376,15 +383,15 @@ class DnsRecords: return 0 #点击勾选第一行选择框 self.first_row_checkBox_element.click() #变量来自查询函数 - 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() # 判断保存后内容是否丢失,是否不显示 - current_name = self.driver.find_element(By.ID, dnsRecordsProfilePage_input_Name_posId).get_attribute("value") + current_name = self.driver.find_element(By.XPATH, dns_records_profile_page_input_name_posxpath).get_attribute("value") # print("current_name=", current_name) pytest_check.equal(current_name, self.random_name, msg="所在行数{}".format(inspect.currentframe().f_lineno)) - current_type = self.driver.find_element(By.XPATH, "//label[@class='el-radio-button el-radio-button--small is-active']").text.strip() + current_type = self.driver.find_element(By.XPATH, "//button[contains(@class, 'btn-active')]").text.strip() # print("current_type=", current_type) pytest_check.equal(current_type, data["type"].split("->")[0], msg="所在行数{}".format(inspect.currentframe().f_lineno)) - current_description = self.driver.find_element(By.ID, dnsRecordsProfilePage_textArea_Description_posId).get_attribute("value") + current_description = self.driver.find_element(By.XPATH, dns_records_profile_page_text_area_description_posxpath).get_attribute("value") # print("current_description=", current_description) pytest_check.equal(current_description, data["description"].split("->")[0], msg="所在行数{}".format(inspect.currentframe().f_lineno)) current_values_map = self.driver.find_elements(By.XPATH, "//div[@class='el-form-item errmsg-reset el-form-item--feedback is-no-asterisk el-form-item--small']") @@ -401,19 +408,19 @@ class DnsRecords: #根据修改数据,判断type类型 self._select_type(data, model=-1) if data["type"].split("->")[0].lower() != data["type"].split("->")[1].lower(): #创建和修改参数的type类型不一致 - self._ceate_item(data, model=-1) + self._create_item(data, model=-1) else: self._modify_item(data) # 修改name new_Name = "(修改后)" - self.driver.find_element(By.ID, dnsRecordsProfilePage_input_Name_posId).send_keys(new_Name) + 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.ID, dnsRecordsProfilePage_textArea_Description_posId).clear() - self.driver.find_element(By.ID, dnsRecordsProfilePage_textArea_Description_posId).send_keys(data["description"].split("->")[-1]) - self.driver.find_element(By.CSS_SELECTOR, dnsRecordsProfilePage_button_oK_posCss).click() - if self.driver.find_element(By.CSS_SELECTOR, dnsRecordsProfilePage_button_warningSaveYes_posCss).is_displayed(): - self.driver.find_element(By.CSS_SELECTOR, dnsRecordsProfilePage_button_warningSaveYes_posCss).click() + self.driver.find_element(By.XPATH, dns_records_profile_page_text_area_description_posxpath).clear() + 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(): + # self.driver.find_element(By.CSS_SELECTOR, dnsRecordsProfilePage_button_warningSaveYes_posCss).click() @screenshot_on_failure def _del(self, del_model=0): @@ -426,7 +433,7 @@ class DnsRecords: #点击勾选第一行选择框 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: @@ -434,8 +441,8 @@ class DnsRecords: if del_result == 1: # 1表示没有删除对象,直接返回 return 0 #调用profiles的功能删除方法 - self.profiles_po.delete(listPage_profile_dnsRecords_delButton_posId, listPage_dialogTips_dnsRecords_button_yes_posCss, - listPage_dialogTips_dnsRecords_button_no_posCss) + self.profiles_po.delete(listpage_profile_dns_records_del_button_posxpath, listpage_dialogtips_dns_records_button_yes_posxpath, + listpage_dialogtips_dns_records_button_no_posxpath) @screenshot_on_failure def _column_setting(self, column: (), column_flags=0): @@ -448,10 +455,14 @@ class DnsRecords: """ # 打开该列表 self._goto_subProfilePage() + self._column_setting_help(column, column_flags) + + def _column_setting_help(self, column: (), column_flags=0): profiles = "DNSRecordProfile" - column_click = column[2:] - current_column = self.profiles_po.column_setting(mainPage_profileColumn_columnSetting_posId, listPage_profileColumn_dnsRecords_button_columnAll_posXpath, listPage_profileColumn_dnsRecords_button_cancel_posId, - listPage_profileColumn_dnsRecords_button_ok_posId, profiles, column_flags, column_click) + column_click = column[1:] + current_column = self.profiles_po.column_setting(mainpage_profile_column_setting_posxpath, + listpage_profile_column_dns_records_button_column_all_posxpath, + profiles, column_flags, column_click) pytest_check.equal(current_column, column, msg="所在行数{}".format(inspect.currentframe().f_lineno)) def _turn_pages(self, pages): @@ -473,19 +484,19 @@ class DnsRecords: :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: - header_english = ["ID", "Vsys ID", "Name", "Type", "Values", "Description", "Reference Count", "Modified Time", "Last Modified By"] - assert set(header_content).issubset(set(header_english)) + header_english = ["Vsys ID", "Name", "Type", "Values", "Description", "Reference Count", "Modified Time", "Last Modified By"] + pytest_check.equal(header_content, header_english, msg="所在行数{}".format(inspect.currentframe().f_lineno)) if language == 1: - header_chinese = ['ID', '虚拟系统 ID', '名称', '类型', '值', '描述', '引用计数', '操作时间', '最后一次修改者'] - assert set(header_content).issubset(set(header_chinese)) + header_chinese = ['虚拟系统 ID', '名称', '类型', '值', '描述', '引用计数', '操作时间', '最后一次修改者'] + pytest_check.equal(header_content, header_chinese, msg="所在行数{}".format(inspect.currentframe().f_lineno)) if language == 2: - header_russian = ['ID', 'Vsys ID', 'Имя', 'Тип', 'Значения', 'Описание', 'Подсчет Ссылок', 'Время Изменения', 'Последний Раз Редактирован'] - assert set(header_content).issubset(set(header_russian)) + header_russian = ['Vsys ID', 'Имя', 'Тип', 'Значения', 'Описание', 'Подсчет Ссылок', 'Время Изменения', 'Последний Раз Редактирован'] + pytest_check.equal(header_content, header_russian, msg="所在行数{}".format(inspect.currentframe().f_lineno)) def _vsys_case(self, data, c_vsys, c_type, c_supervisor, f_vsys, f_type, f_supervisor="None"): name = self._create(data, f_vsys) @@ -610,12 +621,12 @@ class DnsRecords: self.driver.find_element(By.XPATH, "//div[@class='box-content']/div/div[1]").click() def _check_queryConditions(self, **kwargs): - queryConditions_xpath = self.driver.find_elements(By.XPATH, "//div[@class='list-container']//div[@class='ListItem clearfix']") + queryConditions_xpath = self.driver.find_elements(By.XPATH, "//div[@class='dune-search-tag search_tag_1']") # print(queryConditions_xpath) - queryConditions ={} + queryConditions = {} for i in queryConditions_xpath: - key = i.find_element(By.XPATH, "//div[@class='label']").text.strip() - value = i.find_element(By.XPATH, "//div[@class='value']").text.strip() + key = i.find_element(By.XPATH, "//span[normalize-space(text())='contains']/preceding-sibling::span").text.strip() + value = i.find_element(By.XPATH, "//span[normalize-space(text())='contains']/following-sibling::span").text.strip() queryConditions[key] = value # print("key=", key) # print("value=", value) @@ -623,8 +634,8 @@ class DnsRecords: print(kwargs) assert queryConditions == kwargs # 强制点击清空查询按钮 - element_clear = self.driver.find_element(By.ID, listPage_profileSearch_dnsRecords_buttonClear_posId) - self.driver.execute_script("arguments[0].click()", element_clear) # 强制点击 + # element_clear = self.driver.find_element(By.ID, listPage_profileSearch_dnsRecords_buttonClear_posId) + # self.driver.execute_script("arguments[0].click()", element_clear) # 强制点击 @screenshot_on_failure def check_createAndEditPageElement(self, data): @@ -707,20 +718,19 @@ class DnsRecords: @screenshot_on_failure def chk_lnk_mod_case(self, data, link_list_dict): + tmp_name = self._create(data) + time.sleep(3) + search_dict = self._search(data, require_assertion=0, Name=tmp_name) + time.sleep(3) + # 勾选第一行 + 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_linkTips_dnsRecords_button_save_posXpath, + listPage_linkTips_dnsRecords_button_add_posXpath, + listPage_linkTips_dnsRecords_button_OK_posXpath) try: - tmp_name = self._create(data) - time.sleep(3) - search_dict = self._search(data, require_assertion=0, Name=tmp_name) - time.sleep(3) - # 勾选第一行 - 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_linkTips_dnsRecords_button_save_posXpath, - listPage_linkTips_dnsRecords_button_add_posXpath, - listPage_linkTips_dnsRecords_button_OK_posXpath) - self._search(data, require_assertion=1, ID=search_dict["ID"]) # 点击勾选第一行选择框 self.first_row_checkBox_element.click() # 变量来自查询函数 @@ -773,7 +783,8 @@ class DnsRecords: # 判断是否一致 self.profiles_po.dicts_are_equal(sou_value_dict, des_val_dict_one, des_val_dict_two) except Exception as e: - assert e + print("Exception ============", e) + raise e finally: self._just_goto_dns_record_page() self._delete_des(Des_ID_list, data) # 删除数据 @@ -917,6 +928,7 @@ class DnsRecords: ], "description": "test.sodmao.asdo.com->12.12.33.45" ''' + time.sleep(0.5) value_dict = {} name = self.driver.find_element(By.ID, dnsRecordsProfilePage_input_Name_posId).get_attribute("value") value_dict["name"] = name @@ -931,7 +943,6 @@ class DnsRecords: value_dict["description"] = description # 点击 Cancel self.driver.find_element(By.CSS_SELECTOR, dnsRecordsProfilePage_button_cancel_posCss).click() - return value_dict def chk_query_spec_chr(self, data): @@ -969,16 +980,152 @@ class DnsRecords: def _audit_log_all_operation(self, data): ran_name = self._create(data) try: - time.sleep(0.5) + profiles_type = "DNS Record Profile" search_dict = self._search(data, Name=ran_name) + self._audit_log_operation(profiles_type, search_dict["ID"], operation_type='Create') + self._search(data, Name=ran_name) + self._audit_log_operation(profiles_type, search_dict["ID"], operation_type='Query Verbose') + self._search(data, Name=ran_name) self._modify(data) - time.sleep(0.5) + self._search(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._search(data, Name=ran_name) self._del() - self.profiles_po.audit_log_view("DNS Record Profile", search_dict["ID"]) + 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_dnsRecords_editButton_posId).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, dns_records_profile_page_create_time_posXpath).text + elif operation_type == 'Edit': + # 修改时间 + compare_time = self.driver.find_element(By.XPATH, dns_records_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, dns_records_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, dns_records_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._search(data, Name=ran_name) + try: + # ID 唯一查询 + self._search(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._search(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)) + self.driver.find_element(By.ID, listPage_profileSearch_dnsRecords_dropDown_search_clear_posId).click() + + # A 类型查询 + search_type = 'A' + self.driver.find_element(By.ID, mainPage_profileSearch_selectLabel_posId).click() + self.driver.find_element(By.ID, listPage_profileSearch_dnsRecords_dropDown_type_posId).click() + scrollable_div = self.driver.find_element(By.XPATH, + f"//div[@class='el-select-dropdown el-popper select-popper']//span[text()='{search_type}']") + self.driver.execute_script("arguments[0].scrollIntoView();", scrollable_div) + scrollable_div.click() + self.driver.find_element(By.ID, mainPage_profileSearch_buttonSearch_posId).click() + type_eles = self.driver.find_elements(By.XPATH, "//td[contains(@class,'el-table_1_column_3 is-left')]") + type_ele_lst = [e.text for e in type_eles] + if type_ele_lst: + pytest_check.equal(len(set(type_ele_lst)), 1, msg="所在行数{}".format(inspect.currentframe().f_lineno)) + else: + pytest_check.equal(len(set(type_ele_lst)), 0, msg="所在行数{}".format(inspect.currentframe().f_lineno)) + self.driver.find_element(By.ID, listPage_profileSearch_dnsRecords_dropDown_search_clear_posId).click() + + # AAAA 类型查询 + search_type = 'AAAA' + self.driver.find_element(By.ID, mainPage_profileSearch_selectLabel_posId).click() + self.driver.find_element(By.ID, listPage_profileSearch_dnsRecords_dropDown_type_posId).click() + scrollable_div = self.driver.find_element(By.XPATH, + f"//div[@class='el-select-dropdown el-popper select-popper']//span[text()='{search_type}']") + self.driver.execute_script("arguments[0].scrollIntoView();", scrollable_div) + scrollable_div.click() + # 搜索 + self.driver.find_element(By.ID, mainPage_profileSearch_buttonSearch_posId).click() + type_eles = self.driver.find_elements(By.XPATH, "//td[contains(@class,'el-table_1_column_3 is-left')]") + type_ele_lst = [e.text for e in type_eles] + if type_ele_lst: + pytest_check.equal(len(set(type_ele_lst)), 1, msg="所在行数{}".format(inspect.currentframe().f_lineno)) + else: + pytest_check.equal(len(set(type_ele_lst)), 0, msg="所在行数{}".format(inspect.currentframe().f_lineno)) + + # 上述组合查询 + self.driver.find_element(By.ID, listPage_profileSearch_dnsRecords_dropDown_search_clear_posId).click() + + + except Exception as e: + print("Exception ============", e) + raise e + finally: + self._search(data, Name=ran_name) + self._del() create = _create query = _search @@ -1004,9 +1151,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 = DnsRecords(a) @@ -1015,41 +1162,36 @@ if __name__ == '__main__': # model=0/1 ====0:单个 1group # type =IMSI/Phone_Number/IMEI data = { - "ids": "创建多类型A,再修改为CNAME用例", - "model": "modify", - "type": "A->CNAME", - "values": - [ - "112.12.32.12->test.sdgoc.sdwa.caom.com", - "53.23.234.21->", - "12.12.33.45->test.sodmao.asdo.com", - "->test.sddsg.sdsd.fco.cn" - ], - "values_format": - [ - "true->true", - "true->", - "true->true", - "->true" - ], - "description": "12.12.33.45->test.sodmao.asdo.com" + + "ids": "创建单个类型A用例校验格式测试查出范围ip地址", + "model": "create", + "type": "A", + "values": + [ + "6.6.6.6666" + ], + "values_format": + [ + "false" + ], + "description": "test-description1234" } # 测试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 = [1] # 可取值 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 = [1] # 可取值 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 = [ { @@ -1062,7 +1204,7 @@ if __name__ == '__main__': ] """ - r.check_link_case_modify(data, link_list_dict=link_list_dict) + r.create(data) ''' update_two_value_dict == == == == == = {'name': 'test_uitemp_xlVvJWuk_25212028_2024-07-19-11-27-15(修改后)', 'type': 'CNAME', diff --git a/common/ui_common/profiles/response_pages.py b/common/ui_common/profiles/response_pages.py index 63a15fe1..6334b1ea 100644 --- a/common/ui_common/profiles/response_pages.py +++ b/common/ui_common/profiles/response_pages.py @@ -85,7 +85,7 @@ class ResponsePages: pytest_check.equal(self.driver.find_element(By.XPATH,"//div[@class='MuiFormHelperText-root css-1y20gt9']").text.strip(), "Name cannot be empty", msg="所在行数{}".format(inspect.currentframe().f_lineno)) self.driver.find_element(By.XPATH, response_page_button_cancel_posxpath).click() - if len(self.random_name) < 4 and len(self.random_name) > 0: # name不符合要求 + elif len(self.random_name) < 4 and len(self.random_name) > 0: # name不符合要求 if self.driver.element_isExist(By.XPATH, "//div[@class='MuiFormHelperText-root css-1y20gt9']"): print("The length of the name is at most 128 characters and cannot be less than 4 characters") pytest_check.equal(self.driver.find_element(By.XPATH, "//div[@class='MuiFormHelperText-root css-1y20gt9']").text.strip(), |
