diff options
| author | youzhijiang <[email protected]> | 2024-10-24 16:30:23 +0800 |
|---|---|---|
| committer | youzhijiang <[email protected]> | 2024-10-24 16:30:23 +0800 |
| commit | 87fc3ad030d64957031c35482929568c48adef2e (patch) | |
| tree | 87ceb6e7af607210c6b9395d8889f8c6630f3750 | |
| parent | 1f726d6dc1c706ca499e44ebac9271d1f317c488 (diff) | |
元素定位调整
| -rw-r--r-- | cases/object/test_fqdns.py | 34 | ||||
| -rw-r--r-- | common/ui_common/objects/accounts.py | 67 | ||||
| -rw-r--r-- | common/ui_common/objects/fqdns.py | 25 | ||||
| -rw-r--r-- | common/ui_common/objects/ip_address.py | 14 | ||||
| -rw-r--r-- | common/ui_common/objects/keywords.py | 19 | ||||
| -rw-r--r-- | common/ui_common/objects/moible_identities.py | 18 | ||||
| -rw-r--r-- | common/ui_common/objects/subscriber_ids.py | 10 | ||||
| -rw-r--r-- | common/ui_common/objects/urls.py | 26 | ||||
| -rw-r--r-- | page_element/objects_element_position.py | 40 | ||||
| -rw-r--r-- | testdata/ui_data/objects_data/Accounts/base_accounts.json | 6 | ||||
| -rw-r--r-- | testdata/ui_file/objects/import_file/accounts_item导入大量数据文件.txt | 2011 | ||||
| -rw-r--r-- | testdata/ui_file/objects/import_file/accounts_item导入文件.txt | 11 | ||||
| -rw-r--r-- | testdata/ui_file/objects/import_file/urls_item导入文件.txt | 14 |
13 files changed, 1132 insertions, 1163 deletions
diff --git a/cases/object/test_fqdns.py b/cases/object/test_fqdns.py index 2592cce2..351521f2 100644 --- a/cases/object/test_fqdns.py +++ b/cases/object/test_fqdns.py @@ -65,7 +65,7 @@ class Test_fqdns: }, "Createtype": "FQDN", "Subtype": "not_delete", - "Search_type": "ID" + "Search type": "Name" },{ "ids": "用例7:FQDNs的五层嵌套", "Name": "test--2", @@ -76,7 +76,7 @@ class Test_fqdns: }, "Createtype": "FQDN", "Subtype": "not_delete", - "Search_type": "ID" + "Search type": "Name" },{ "ids": "用例7:FQDNs的五层嵌套", "Name": "test--3", @@ -87,7 +87,7 @@ class Test_fqdns: }, "Createtype": "FQDN", "Subtype": "not_delete", - "Search_type": "ID" + "Search type": "Name" },{ "ids": "用例7:FQDNs的五层嵌套", "Name": "test--", @@ -115,7 +115,7 @@ class Test_fqdns: }, "Createtype": "FQDN", "Subtype":"", - "Search_type": "ID" + "Search type": "Name" },{ "ids": "用例2:FQDNs-Group的增删改查", "Name": "test-fqdn group", @@ -126,7 +126,7 @@ class Test_fqdns: }, "Createtype": "FQDN", "Subtype": "", - "Search_type": "ID" }]) + "Search type": "Name" }]) def test_View_statistics_case(self,demo_fixture,data): fqdns = FQDNs(demo_fixture) fqdns._View_statistics_case(data) @@ -143,7 +143,7 @@ class Test_fqdns: }, "Createtype": "FQDN", "Subtype": "", - "Search_type": "ID" + "Search type": "Name" }]) # 用例13、导出文件 def test_FQDNs_export_files_case(self, data): driver = download_files() @@ -188,7 +188,7 @@ class Test_fqdns: }, "Createtype": "FQDN", "Subtype": "", - "Search_type": "ID" + "Search type": "Name" }]) def test_audit_log_case(self,demo_fixture,data): fqdns = FQDNs(demo_fixture) @@ -294,7 +294,7 @@ class Test_fqdns: "item": ["example.com$"] }, "Subtype": "0", - "Search_type": "ID" + "Search type": "Name" }, { "ids": "用例33、exclude添加,include未添加校验", "Name": "test-1", @@ -304,7 +304,7 @@ class Test_fqdns: "item": ["example.com$"] }, "Subtype": "1", - "Search_type": "ID" + "Search type": "Name" }, { "ids": "用例33、exclude,include均未添加校验", "Name": "test-1", @@ -318,7 +318,7 @@ class Test_fqdns: "item": ["example.com$"] }, "Subtype": "3", - "Search_type": "ID" + "Search type": "Name" } ]) def test_group_include(self, demo_fixture, data): @@ -340,7 +340,7 @@ class Test_fqdns: ]}, "Createtype": "FQDN", "Subtype":"", - "Search_type": "ID" + "Search type": "Name" },{ "ids": "用例2:FQDNs-Group的增删改查", "Name": "test-fqdn group", @@ -352,7 +352,7 @@ class Test_fqdns: ]}, "Createtype": "FQDN", "Subtype":"", - "Search_type": "ID" + "Search type": "Name" } ]) # 用例13、导出文件 def test_item_search(self, demo_fixture, data): @@ -385,7 +385,7 @@ class Test_fqdns: }, "Createtype": "FQDN", "Subtype": "", - "Search_type": "ID" } + "Search type": "Name" } ]) def test_sub_objects_drawer_search(self, demo_fixture, data): fqdns = FQDNs(demo_fixture) @@ -404,7 +404,7 @@ class Test_fqdns: "files_name": "FQDNs_true_file.txt" }, "Subtype": "", - "Search_type": "ID" + "Search type": "Name" } ]) def test_audit_log_all_operation(self,data): @@ -422,7 +422,7 @@ class Test_fqdns: "item": ["example.com$"] }, "Subtype": "", - "Search_type": "ID" + "Search type": "Name" } ]) def test_policy_quote_role(self, demo_fixture,data): @@ -441,7 +441,7 @@ class Test_fqdns: ]}, "Createtype": "FQDN", "Subtype": "", - "Search_type": "ID" + "Search type": "Name" },{ "ids": "用例1:Punny Code类型的Fqdn验证", "Name": "random", @@ -453,7 +453,7 @@ class Test_fqdns: ]}, "Createtype": "FQDN", "Subtype": "", - "Search_type": "ID" + "Search type": "Name" } ]) def test_punny_code(self,demo_fixture,data): diff --git a/common/ui_common/objects/accounts.py b/common/ui_common/objects/accounts.py index ebf6af68..afc6b7a2 100644 --- a/common/ui_common/objects/accounts.py +++ b/common/ui_common/objects/accounts.py @@ -442,7 +442,7 @@ class Accounts: @screenshot_on_failure def _items_acc_del(self, item_value): # 点击要删除的数据按钮操作 - acc_item_del_btn_xpath = "//*[normalize-space(text())='{}']/ancestor::div[@class='form-list-row css-xpbhx9']//i[@class='iconfont icon-Delete_X text-[18px] text-[--color-text]']".format(item_value) + acc_item_del_btn_xpath = "//*[normalize-space(text())='{}']/ancestor::div[@class='form-list-row css-xpbhx9']//i[@class='iconfont icon-Delete_X']".format(item_value) self.driver.find_element(By.XPATH, acc_item_del_btn_xpath).click() @screenshot_on_failure @@ -506,21 +506,14 @@ class Accounts: from collections import Counter value_pos = acc_ObjectDetailPage_importDrawer_importTipsValue_posXpath_template # 页面Import Tips中获取结果 - valid_num = int(self.driver.find_element(By.XPATH, value_pos.format("Object Name")).get_attribute("title")) - invalid_format_num = int( - self.driver.find_element(By.XPATH, value_pos.format("Invalid format")).get_attribute("title")) - duplicate_within_file_num = int( - self.driver.find_element(By.XPATH, value_pos.format("Duplicate Within File")).get_attribute("title")) - duplicate_within_existing_num = int( - self.driver.find_element(By.XPATH, value_pos.format("Duplicate Within Existing")).get_attribute("title")) - total_num = int(self.driver.find_element(By.XPATH, value_pos.format("Total")).get_attribute("title")) + valid_num = int(self.driver.find_element(By.XPATH, ObjectDetailPage_importDrawer_importTipsValue_Valid_posXpath).text) + invalid_format_num = int(self.driver.find_element(By.XPATH,ObjectDetailPage_importDrawer_importTipsValue_InvalidFormat_posXpath).text) + duplicate_within_file_num = int(self.driver.find_element(By.XPATH,ObjectDetailPage_importDrawer_importTipsValue_Duplicates_current_file_posXpath).text) + duplicate_within_existing_num = int(self.driver.find_element(By.XPATH,ObjectDetailPage_importDrawer_importTipsValue_Duplicates_global_objects_posXpath).text) + total_num = int(self.driver.find_element(By.XPATH, ObjectDetailPage_importDrawer_importTipsValue_Total_posXpath).text) # 页面 importTable中获取结果 - import_table_value_pos = '//div[@class="importTable"]//*[@class="{}"]' - failed_items_num_in_import_table = len( - self.driver.find_elements(By.XPATH, import_table_value_pos.format("iconfont icon-Dashboarddisablepolicy"))) - total_num_in_import_table = int(self.driver.find_element(By.XPATH, - import_table_value_pos.format( - "el-pagination__total")).text[6:]) + failed_items_num_in_import_table = len(self.driver.find_elements(By.XPATH, ObjectDetailPage_importDrawer_importTable_Failed_items_posXpath)) + total_num_in_import_table = int(self.driver.find_element(By.XPATH, ObjectDetailPage_importDrawer_importTable_Total_posXpath).text[6:]) # 文件中统计结果 with open(self.my_files._obj_files_path(file_name=data_file_name), "r", encoding='utf-8') as f: # 打开文件 @@ -543,18 +536,15 @@ class Accounts: :return: """ self._object_detail_page_save() - notLoading_elem_xpath = self.driver.element_isExist(By.XPATH, - global_loading_elem_whenNotDisplaied_xpath) + # notLoading_elem_xpath = self.driver.element_isExist(By.XPATH,global_loading_elem_whenNotDisplaied_xpath) # print("是否不在加载:{}".format(is_exist_notLoading_elem_xpath)) - while not notLoading_elem_xpath: # 加载 - # print("Loading!") - notLoading_elem_xpath = self.driver.element_isExist(By.XPATH, - global_loading_elem_whenNotDisplaied_xpath) - if notLoading_elem_xpath: - # print("加载完毕") - break - self.first_row_checkBox_element = self.driver.find_element(By.XPATH, - "//span[@class='el-checkbox__input']").click() # 勾选第一行元素 + # while not notLoading_elem_xpath: # 加载 + # # print("Loading!") + # notLoading_elem_xpath = self.driver.element_isExist(By.XPATH,global_loading_elem_whenNotDisplaied_xpath) + # if notLoading_elem_xpath: + # # print("加载完毕") + # break + self.first_row_checkBox_element = self.driver.find_element(By.XPATH,listPage_select_first_object_posXpath).click() # 勾选第一行元素 self.driver.find_element(By.XPATH, acc_listPage_editButton_posXpath).click() # 点击edit按钮 # return item_data @@ -786,7 +776,7 @@ class Accounts: # 搜索前的Total值 origin_items_total = self.wait.until( EC.presence_of_element_located((By.XPATH, total_text_pos))).text # Total 值 - origin_items_total = int(origin_items_total.split(":")[-1].strip()) + origin_items_total = int(origin_items_total) acc_ObjectDetailPage_object_search_elem.clear() # 清空输入框 # 搜索框中键入搜索值 @@ -1263,6 +1253,7 @@ class Accounts: ##过渡方案!! self.driver.find_element(By.XPATH,acc_ObjectGroupDetailPage_subObjects_addButton_newAdd_posXpath).click() # 点击Subordinate Objects + 按钮 self.driver.find_element(By.XPATH, acc_ObjectDetailPage_firstAccObject).click() # 选择第一个ACC Object + self.driver.find_element(By.XPATH,acc_ObjectDetailPage_cancel_posXpath).click() #点击cancel取消侧滑 # 点击OK self.driver.find_element(By.XPATH,acc_ObjectDetailPage_mainOkButton_posXpath).click() # 点击“OK”按钮 # self.driver.find_element(By.XPATH, acc_ObjectDetailPage_okButton_yes_posXpath).click() # 点击确认弹窗的“Yes”按钮 @@ -1303,9 +1294,8 @@ class Accounts: self._create(data) # 新建 self._query(data) # 创建后查询 # 勾选被引用的对象 - first_quoted_object_elem_posXpath = '(//div[@class="obj-charts-btn pro-port cursorPointer textCenter"][number(text())=1][1]/../../../../..//span)[1]' # 引用数大于0的第一个对象对应的勾选框元素Xpath - first_quoted_object_elem = self.driver.find_element(By.XPATH, - first_quoted_object_elem_posXpath) # 引用数大于0的第一个对象对应的勾选框元素 + first_quoted_object_elem_posXpath = "(//div[@data-field='reference_count']/button[number(text())=1]/../..//input[@class='MuiCheckbox-input css-1jj0cvj'])[1]" # 引用数大于0的第一个对象对应的勾选框元素Xpath + first_quoted_object_elem = self.driver.find_element(By.XPATH,first_quoted_object_elem_posXpath) # 引用数大于0的第一个对象对应的勾选框元素 first_quoted_object_elem.click() # 点击勾选框 # 定位删除按钮元素,并判断是否可点击 del_button_elem_clickable = self.objects_po.is_element_clickable(acc_listPage_deleteButton_posXpath, "XPATH") @@ -3415,7 +3405,7 @@ if __name__ == '__main__': acc = Accounts(demo_fixture=driver) driver.implicitly_wait(5) - driver.get("http://192.168.45.158/policies/security-rules?vsys=1&t=1729131281875") + driver.get("http://192.168.45.158") # driver.get("http://192.168.42.49") driver.maximize_window() driver.find_element(By.XPATH, '//*[@id="root"]/div/div[2]/div/div[1]/input').send_keys("admin") @@ -3426,21 +3416,16 @@ if __name__ == '__main__': # profile_pub.change_vsys(vsys_name='UIAutoTestVsys') acc.acc_case(data= { - "ids": "创建accObject并搜索-T008", + "ids": "Created By作为搜索条件进行模糊查询-T074-4", "Model": "create", "Type": 0, - "Name": "", - "Search type": "", + "Name": "test_ui_test_ui323", + "Search type": "Created By", "Items": [ - "[random][search]->" + "[random]->" ], "Description": "", - "Subordinate Objects": { - "subName": "", - "subItems": [ - ], - "subDescription": "" - } + "Subordinate Objects": "" }, ) time.sleep(3) diff --git a/common/ui_common/objects/fqdns.py b/common/ui_common/objects/fqdns.py index 60980501..33416127 100644 --- a/common/ui_common/objects/fqdns.py +++ b/common/ui_common/objects/fqdns.py @@ -232,19 +232,20 @@ class FQDNs: self.objects_po.verify_import_drawer_result(self.my_files._obj_files_path(file_name=data["Create"]["files_name"])) elif data['Create']['type'] == "export_files": self._add_item(data) - def _sub_object_create(self,data:{}): + def _sub_object_create(self,data,add_type="include"): if data['Create']['type'] == "quote": # 创建sub_fqdns self.driver.find_element(By.XPATH, FQDNs_Group_sub_Object_addButton_posXpath).click() # 添加sub_Object # 输入sub_name,并选择进行创建 self.driver.find_element(By.XPATH,mainPage_ObjectSearch_buttonSearch_Item_posXpath).send_keys(data['Create']['sub_name'] + Keys.ENTER) self.driver.find_element(By.XPATH,main_Group_sub_Object_input_frame_select_one_posXpath).click() + self.driver.find_element(By.XPATH, acc_ObjectDetailPage_cancel_posXpath).click() elif data['Create']['type'] == "new_object": # 创建sub_fqdns - try: + if add_type == "include": self.driver.find_element(By.XPATH, FQDNs_Group_sub_Object_addButton_posXpath).click() # 添加sub_Object - except: - self.driver.find_element(By.XPATH,"(" + FQDNs_Group_sub_Object_addButton_posXpath + ")" + f"[{2}]").click() + elif add_type == "exclude": + self.driver.find_element(By.XPATH, FQDNs_group_exclude_add_button_posXpath).click() self.driver.find_element(By.XPATH, FQDNs_Group_sub_Object_add_new_Button_posXpath).click() # add new sub_object self.driver.find_element(By.XPATH, FQDNs_Group_sub_Object_add_new_Select_one_Button_posXpath).click() # new mobile_Identities self.driver.find_element(By.XPATH, FQDNs_Group_sub_Object_add_new_one_inputName_posXpath).send_keys(self.random_number) # new mobile_Identities_InputName @@ -568,20 +569,20 @@ class FQDNs: self._search(data) # 用例9、删除被引用或内置数据,选择第二个对象 self.driver.find_element(By.XPATH,main_listPage_object_select_Second_object_posXpath).click() - self.driver.isElementExist(Element=listPage_object_FQDNs_del_disabled_Button_posXpath) + self.driver.isElementExist(Element=listPage_object_ip_address_delButton_disable_posXpath) assert self.driver.Exist,"是否可以删除引用或内置数据" print("引用、内置数据不可被删除") # 用例10、查看引用计数 - self.reference_count = self.driver.find_element(By.XPATH,listPage_object_main_reference_count_posXpath).text + self.reference_count = self.driver.find_element(By.XPATH,list_quote_content_object_HTTP_Signatures_posXpath).text assert self.reference_count == "1","断言引用计数为1" - self.driver.find_element(By.XPATH, listPage_object_main_reference_count_posXpath).click() + self.driver.find_element(By.XPATH, list_quote_content_object_HTTP_Signatures_posXpath).click() # 查看引用计数,只存在一个引用数据,不存在第二个引用数据 self.driver.isElementExist(Element=listPage_profilTable_FQDNs_reference_first_row_posXpath) assert self.driver.Exist,"第一行存在引用数据" self.driver.isElementExist(Element=listPage_profilTable_FQDNs_reference_Second_row_posXpath) assert self.driver.Exist == False,"第二行存在引用数据" - self.driver.find_element(By.XPATH, "//div[@class='el-dropdown-menu__item el-row']").click() - self.driver.find_element(By.XPATH, "//button[@id='objectEdit_slider']").click() + self.driver.find_element(By.XPATH, listPage_profilTable_FQDNs_reference_first_row_posXpath).click() + self.driver.find_element(By.XPATH, list_quote_object_Edit_posXpath).click() self.driver.find_element(By.XPATH, FQDNsObjectPage_button_cancel_posCss).click() # # 取消第二个对象的选中,进行删除操作 # self.driver.find_element(By.XPATH, main_listPage_object_select_Second_object_posXpath).click() @@ -1386,7 +1387,7 @@ class FQDNs: self.driver.find_element(By.XPATH, FQDNs_Group_sub_Object_add_new_one_inputName_posXpath).send_keys(self.random_number) # new mobile_Identities_InputName self._add_item(data) self.driver.find_element(By.XPATH, FQDNs_Group_sub_Object_add_new_one_OK1_Button_posXpath).click() - self.driver.find_element(By.XPATH,FQDNs_Group_sub_Object_add_new_one_OK1_Warning_Yes_Button_posXpath).click() + # self.driver.find_element(By.XPATH,FQDNs_Group_sub_Object_add_new_one_OK1_Warning_Yes_Button_posXpath).click() self.driver.find_element(By.XPATH,fqdn_object_group_subobject_close_posXpath).click() time.sleep(2) self.driver.find_element(By.XPATH, FQDNsObjectPage_button_SaveYes_posXpath).click() @@ -1406,12 +1407,12 @@ class FQDNs: sub_object_name.append(self.random_number) self._sub_object_create(data) self.driver.find_element(By.XPATH, FQDNs_Group_sub_Object_add_new_one_OK1_Button_posXpath).click() - self.driver.find_element(By.XPATH,FQDNs_Group_sub_Object_add_new_one_OK1_Warning_Yes_Button_posXpath).click() + # self.driver.find_element(By.XPATH,FQDNs_Group_sub_Object_add_new_one_OK1_Warning_Yes_Button_posXpath).click() self.driver.find_element(By.XPATH, fqdn_object_group_subobject_close_posXpath).click() self.driver.find_element(By.XPATH, FQDNs_Group_sub_Object_group_exclude_open_posXpath).click() self.random_number = "test_" + self.objects_po.my_random.random_number() sub_object_name.append(self.random_number) - self._sub_object_create(data) + self._sub_object_create(data,add_type="exclude") self.Confirm_creation(data) self._search(data) self.driver.find_element(By.XPATH, listPage_object_FQDNs_select_First_object_posXpath).click() # 选择第一个对象 diff --git a/common/ui_common/objects/ip_address.py b/common/ui_common/objects/ip_address.py index 5908d4fd..85175f2a 100644 --- a/common/ui_common/objects/ip_address.py +++ b/common/ui_common/objects/ip_address.py @@ -201,13 +201,13 @@ class IPAddress: pass elif data['Create']['type'] == "export_files": pass - def _sub_ip_address_create(self,data:{}): + def _sub_ip_address_create(self,data,add_type="include"): if data["Createtype"] == "IP": if data['Create']['type'] == "new_object": - try: + if add_type == "include": self.driver.find_element(By.XPATH,ip_address_Group_sub_Object_addButton_posXpath).click() # 添加sub_Object - except: - self.driver.find_element(By.XPATH,"(" + ip_address_Group_sub_Object_addButton_posXpath + ")" + f"[{2}]").click() + elif add_type == "exclude": + self.driver.find_element(By.XPATH,listPage_object_group_exclude_add_button_posXpath).click() # 进入添加object界面 self.driver.find_element(By.XPATH,ip_address_Group_sub_Object_add_new_Button_posXpath).click() # add new sub_object self.driver.find_element(By.XPATH,ip_address_Group_sub_Object_add_new_Select_one_Button_posXpath).click() # new mobile_Identities @@ -231,6 +231,7 @@ class IPAddress: self.driver.find_element(By.XPATH,ip_address_Group_sub_Object_addButton_posXpath).click() # 添加sub_Object self.driver.find_element(By.XPATH,mainPage_ObjectSearch_buttonSearch_Item_posXpath).send_keys(data['Create']['sub_name']+Keys.ENTER) self.driver.find_element(By.XPATH,main_Group_sub_Object_input_frame_select_one_posXpath).click() + self.driver.find_element(By.XPATH,acc_ObjectDetailPage_cancel_posXpath).click() elif data['Create']['type'] == "export_files": pass elif data["Createtype"] == 'Geography': @@ -1558,6 +1559,7 @@ class IPAddress: def group_object_include(self,data): self._goto_subObjectPage() + time.sleep(3) self.driver.find_element(By.XPATH, listPage_object_ip_address_createButton_posXpath).click() self.driver.find_element(By.XPATH, listPage_object_ip_address_create_ip_address_Group_Button_posXpath).click() self.driver.find_element(By.XPATH, ip_addressObjectPage_textArea_Description_posXpath).send_keys(self.my_random.random_name()) @@ -1576,7 +1578,7 @@ class IPAddress: self.driver.find_element(By.XPATH, ip_addressObjectPage_button_OK_posXpath).click() # self.driver.find_element(By.XPATH, ip_addressObjectPage_button_warningSaveYes_posXpath).click() assert self.driver.find_element(By.XPATH,"//div[@role='alert']//p").text == "When enabling excluded objects, there must be at least one valid piece of data" - self.driver.find_element(By.XPATH,ip_addressObjectPage_button_cancel_posCss).click() + self.driver.find_element(By.XPATH, ip_addressObjectPage_button_cancel_posCss).click() self.driver.find_element(By.XPATH, asn_ObjectDetailPage_leaveThisPage_yesButton_posXpath).click() self._delete_sub(data) elif data["Subtype"] == "1": @@ -1609,7 +1611,7 @@ class IPAddress: # self.driver.find_element(By.XPATH, listPage_object_group_subobject_second_posXpath).click() self.random_number = self.objects_po.my_random.random_number() sub_object_name.append(self.random_number) - self._sub_ip_address_create(data) + self._sub_ip_address_create(data,add_type="exclude") self.Confirm_creation(data) self._search(data) time.sleep(1) diff --git a/common/ui_common/objects/keywords.py b/common/ui_common/objects/keywords.py index e157eb89..24e86e69 100644 --- a/common/ui_common/objects/keywords.py +++ b/common/ui_common/objects/keywords.py @@ -178,11 +178,11 @@ class Keywords: # 新建item self.keywords_add_item(data) - def Keywords_create_object_group(self,data:{}): - try: + def Keywords_create_object_group(self,data,add_type="include"): + if add_type == "include": self.driver.find_element(By.XPATH, Keywords_Group_sub_Object_addButton_posXpath).click() # 添加sub_Object - except: - self.driver.find_element(By.XPATH,"(" + Keywords_Group_sub_Object_addButton_posXpath + ")" + f"[{2}]").click() + elif add_type == "exclude": + self.driver.find_element(By.XPATH,Keywords_Group_sub_object_group_exclude_add_button_posXpath).click() if data['Create']['type'] == "quote": # 输入创建模式为 引用创建 self.driver.find_element(By.XPATH, main_Group_sub_Object_input_frame_posXpath).send_keys(data['Create']["sub_name"] + Keys.ENTER) @@ -192,10 +192,12 @@ class Keywords: if self.driver.Exist: # 选择第一个进行创建 self.driver.find_element(By.XPATH, main_Group_sub_Object_input_frame_select_one_posXpath).click() + self.driver.find_element(By.XPATH, acc_ObjectDetailPage_cancel_posXpath).click() # 点击cancel取消侧滑 else: pass except: print("subObject列表中未找到对应Object") + else: self.driver.find_element(By.XPATH,Keywords_Group_sub_Object_add_new_Button_posXpath).click() # add new sub_object button self.driver.find_element(By.XPATH,Keywords_Group_sub_Object_add_new_Select_one_Button_posXpath).click() # new sub_object button @@ -460,8 +462,7 @@ class Keywords: print("测试通过,删除按钮置灰") # 测试用例11:查看引用计数 - self.reference_content = self.driver.find_element(By.XPATH, - main_listPage_object_reference_count_posXpath).text + self.reference_content = self.driver.find_element(By.XPATH,main_listPage_object_reference_count_posXpath).text self.driver.find_element(By.XPATH, main_listPage_object_reference_count_posXpath).click() self.driver.isElementExist(Element=Keywords_list_reference_content_first_raw) assert self.driver.Exist, "引用计数存在" @@ -469,8 +470,8 @@ class Keywords: self.driver.isElementExist(Element=Keywords_list_reference_content_second_raw) assert self.driver.Exist == False, "引用计数不存在" print("测试通过,引用计数为2不存在") - self.driver.find_element(By.XPATH, "//div[@class='el-dropdown-menu__item el-row']").click() - self.driver.find_element(By.XPATH, "//button[@id='objectEdit_slider']").click() + self.driver.find_element(By.XPATH, list_quote_first_row_object_HTTP_Signatures_posXpath).click() + self.driver.find_element(By.XPATH, list_quote_object_Edit_posXpath).click() self.driver.find_element(By.XPATH, KeywordsObjectPage_button_cancel_posCss).click() # self.driver.find_element(By.XPATH, main_listPage_object_select_Second_object_posXpath).click() for i in range(4): @@ -1163,7 +1164,7 @@ class Keywords: # self.driver.find_element(By.XPATH, listPage_object_group_subobject_second_posXpath).click() self.random_number = self.objects_po.my_random.random_number() sub_object_name.append(self.random_number) - self.Keywords_create_object_group(data) + self.Keywords_create_object_group(data,add_type="exclude") self.confirm_create(data) self._search(data) self.driver.find_element(By.XPATH,listPage_object_Keywords_select_First_object_posXpath).click() # 选择第一个对象 diff --git a/common/ui_common/objects/moible_identities.py b/common/ui_common/objects/moible_identities.py index 4feabbf7..8891d403 100644 --- a/common/ui_common/objects/moible_identities.py +++ b/common/ui_common/objects/moible_identities.py @@ -428,6 +428,7 @@ class mobile_identiities: print("subObject列表中未找到对应元素 ==== 测试Success") else: self.driver.find_element(By.XPATH,mobile_Identities_Group_sub_Object_input_frame_select_one_posXpath).click() + self.driver.find_element(By.XPATH, acc_ObjectDetailPage_cancel_posXpath).click() # 点击cancel取消侧滑 @@ -702,21 +703,20 @@ class mobile_identiities: elif data["Create"]["model"] == "1": if data["Subtype"] == "Five_Group5": self._search(data) + # 点击第二个对象判断被引用对象是否支持删除 python-ui 用例14:删除被引用数据 + self.driver.find_element(By.XPATH, main_listPage_object_select_Second_object_posXpath).click() + self.driver.isElementExist(Element=listPage_object_ip_address_delButton_disable_posXpath) + # 查看被引用对象的引用计数 + assert self.driver.Exist , "断言del按钮元素不存在" + # self.driver.find_element(By.XPATH, main_listPage_object_select_Second_object_posXpath).click() # self.driver.find_element(By.XPATH, listPage_object_mobileIdentities_select_Second_object_posXpath).click() # 提取引用计数,断言引用是否正确 self.driver.find_element(By.XPATH,listPage_object_mobileIdentities_reference_count_posXpath).click() - self.driver.find_element(By.XPATH, listPage_object_mobileIdentities_reference_close_posXpath).click() - self.driver.isElementExist(Element=listPage_object_mobileIdentities_reference_posXpath) + # self.driver.find_element(By.XPATH, listPage_object_mobileIdentities_reference_close_posXpath).click() + self.driver.isElementExist(Element=list_quote_first_row_object_HTTP_Signatures_posXpath) # 断言引用对象的存在 assert self.driver.Exist,"引用对象存在且是1" - # 点击第二个对象判断被引用对象是否支持删除 python-ui 用例14:删除被引用数据 - self.driver.find_element(By.XPATH, main_listPage_object_select_Second_object_posXpath).click() - self.driver.isElementExist(Element=listPage_object_mobileIdentities_delButton_is_to_be_click_posXpath) - # 查看被引用对象的引用计数 - assert self.driver.Exist == False,"断言del按钮元素不存在" - self.driver.find_element(By.XPATH, main_listPage_object_select_Second_object_posXpath).click() - for i in range(4): #执行五次删除 time.sleep(2) self._del() diff --git a/common/ui_common/objects/subscriber_ids.py b/common/ui_common/objects/subscriber_ids.py index 9b53073f..25f13a3e 100644 --- a/common/ui_common/objects/subscriber_ids.py +++ b/common/ui_common/objects/subscriber_ids.py @@ -188,6 +188,7 @@ class Base_Subscriber_IDs: self.driver.find_element(By.XPATH, mainPage_ObjectSearch_buttonSearch_Item_posXpath).send_keys(data['Create']['sub_name'] + Keys.ENTER) self.driver.find_element(By.XPATH, main_Group_sub_Object_input_frame_select_one_posXpath).click() + self.driver.find_element(By.XPATH, acc_ObjectDetailPage_cancel_posXpath).click() elif self.create_type == "new_object": # 创建sub_fqdns self.driver.find_element(By.XPATH, @@ -650,11 +651,10 @@ class Subscriber_IDs(Base_Subscriber_IDs): # 用例7、删除被引用的数据 self.driver.find_element(By.XPATH, main_listPage_object_select_Second_object_posXpath).click() # 删除按钮置灰 - self.driver.isElementExist(Element=listPage_object_Subscriber_IDs_delButton_disable_posXpath) + self.driver.isElementExist(Element=listPage_object_ip_address_delButton_disable_posXpath) assert self.driver.Exist, "断言删除按钮置灰" # 用例9、查看引用计数 - self.reference_count = self.driver.find_element(By.XPATH, - listPage_object_Subscriber_IDs_reference_count_posXpath).text + self.reference_count = self.driver.find_element(By.XPATH,listPage_object_Subscriber_IDs_reference_count_posXpath).text assert self.reference_count == "1", "断言引用计数为1" print("存在引用计数,数量为1") self.driver.find_element(By.XPATH, listPage_object_Subscriber_IDs_reference_count_posXpath).click() @@ -664,8 +664,8 @@ class Subscriber_IDs(Base_Subscriber_IDs): self.driver.isElementExist(Element=listPage_object_Subscriber_IDs_second_reference_list_posXpath) assert self.driver.Exist == False, "第二列不存在引用" print("第二列不存在引用数据====Success") - self.driver.find_element(By.XPATH, "//div[@class='el-dropdown-menu__item el-row']").click() - self.driver.find_element(By.XPATH, "//button[@id='objectEdit_slider']").click() + self.driver.find_element(By.XPATH, list_quote_first_row_object_HTTP_Signatures_posXpath).click() + self.driver.find_element(By.XPATH, list_quote_object_Edit_posXpath).click() self.driver.find_element(By.XPATH, Subscriber_IDsObjectPage_button_cancel_posCss).click() # self.driver.find_element(By.XPATH, main_listPage_object_select_Second_object_posXpath).click() for i in range(4): diff --git a/common/ui_common/objects/urls.py b/common/ui_common/objects/urls.py index d207e66d..9661aaef 100644 --- a/common/ui_common/objects/urls.py +++ b/common/ui_common/objects/urls.py @@ -835,8 +835,7 @@ class URLs: # url_ObjectDetailPage_okButton_yes_posXpath).click() # 点击确认弹窗的“Yes”按钮 self._object_detail_page_save() time.sleep(1) - self.first_row_checkBox_element = self.driver.find_element(By.XPATH, - "//span[@class='el-checkbox__input']").click() # 勾选第一行元素 + self.first_row_checkBox_element = self.driver.find_element(By.XPATH,acc_listPage_first_row_checkBox_posXpath).click() # 勾选第一行元素 self.driver.find_element(By.XPATH, listPage_object_urls_editButton_posXpath).click() # 点击edit按钮 # return item_data @@ -1237,23 +1236,20 @@ class URLs: :param search_value: 层传递的search_value :return: """ - self.driver.find_element(By.XPATH, '//div[@data-label="Name"]/label').click() + self.driver.find_element(By.XPATH, "//label[@class='MuiFormLabel-root css-1ptlcam']").click() operated_search_value = self._operate_item_search(search_value) # 定位搜索框并清除内容 if search_pos == "single": total_text_pos = acc_ObjectDetailPage_itemsTotal_posXpath - url_ObjectDetailPage_search_elem = self.driver.find_element(By.XPATH, - mainPage_ObjectSearch_buttonSearch_Item_posXpath) + url_ObjectDetailPage_search_elem = self.driver.find_element(By.XPATH,url_ObjectDetailPage_object_ip_search_posXpath) items_values_pos = url_ObjectDetailPage_itemsText_posXpath elif search_pos == "sub": total_text_pos = acc_ObjectDetailPage_itemsTotal_posXpath - url_ObjectDetailPage_search_elem = self.driver.find_element(By.XPATH, - urlGroup_ObjectDetailPage_subObjectSearchButton_posXpath) + url_ObjectDetailPage_search_elem = self.driver.find_element(By.XPATH,urlGroup_ObjectDetailPage_subObjectSearchButton_posXpath) items_values_pos = acc_ObjectGroupDetailPage_subObjects_posXpaths else: # search_pos =="exclude": total_text_pos = urlGroup_ObjectDetailPage_excludeTotal_posXpath - url_ObjectDetailPage_search_elem = self.driver.find_element(By.XPATH, - urlGroup_ObjectDetailPage_excludeObjectSearchButton_posXpath) + url_ObjectDetailPage_search_elem = self.driver.find_element(By.XPATH,urlGroup_ObjectDetailPage_excludeObjectSearchButton_posXpath) items_values_pos = acc_ObjectGroupDetailPage_excludeObjects_posXpaths # 搜索前的Total值 @@ -3689,19 +3685,17 @@ if __name__ == '__main__': # profile_pub.change_vsys(vsys_name='UIAutoTestVsys') url.urls_case(data= { - "ids": "创建urlObject再修改-T003", - "Model": "modify", + "ids": "创建urlObject 导入Items from file-T019", + "Model": "create", "Type": 0, "Name": "", "Search type": "", "Items": [ - "abcd->", - "abcd->", - "abcd->", - "$abcd->*.com", + "urls_item导入文件.txt[ImportFromFile]->" ], "Description": "", - "Subordinate Objects": "" + "Subordinate Objects": [ + ] } ) time.sleep(3) diff --git a/page_element/objects_element_position.py b/page_element/objects_element_position.py index 943bd422..1e0cf761 100644 --- a/page_element/objects_element_position.py +++ b/page_element/objects_element_position.py @@ -131,7 +131,7 @@ mainPage_ObjectSearch_input_Item_posId = "onlyMarvel" # 输入item_id main_Group_sub_Object_input_frame_posXpath = "//input[@class='MuiInput-input css-za5rna']" # 新建subObject搜索框 main_Group_sub_Object_input_frame_select_one_posXpath = "//ul[@class='MuiList-root MuiList-vertical MuiList-variantPlain MuiList-colorNeutral MuiList-sizeMd css-1cklc3']/li[1]//div[@class='flex h-[22px] leading-[22px] MuiBox-root css-14di81r']" # 搜索框第一个元素 # 列表页 -main_listPage_object_reference_count_posXpath = "//table/tbody/tr[2]/td[7]/div/div/div/div" # 提取reference的数量《断言》 +main_listPage_object_reference_count_posXpath = "//div[@class='MuiDataGrid-virtualScrollerContent css-0']/div/div[2]//div[@data-field='reference_count']/button" # 提取reference的数量《断言》 main_listPage_object_statistics_view_postXpath = "(//div[@id='ly-table1-listcontent']//span[text()='View'])[1]" main_listPage_object_bottomTotal_postXpath = "//div[@class='flex-1 flex items-center justify-center undefined']/span[1]" # 列表页底部Total元素 # object导入文件Xpath路径 @@ -276,7 +276,7 @@ listPage_object_reprtition_total_postXpath = "//div[@class='css-dob60y']//div[@c listPage_object_group_exclude_open_posXpath = '//input[@type="checkbox"]' listPage_object_group_subobject_fist_posXpath = '//ul[@class="MuiList-root MuiList-vertical MuiList-variantPlain MuiList-colorNeutral MuiList-sizeMd css-1cklc3"]/li[1]//span[@class="truncate"]' listPage_object_group_subobject_second_posXpath = '//ul[@class="MuiList-root MuiList-vertical MuiList-variantPlain MuiList-colorNeutral MuiList-sizeMd css-1cklc3"]/li[2]//span[@class="truncate"]' -ip_object_group_subobject_close_posXpath = "//div[@class='KeywordsList list-box']//span[normalize-space(text())='Close']" +ip_object_group_subobject_close_posXpath = "//div[@class='absolute bottom-0 h-[40px] w-[100%] overflow-hidden text-[16px] truncate bg-[--color-background-secondary] flex justify-center items-center pl-[12px] pr-[38px]']//button[text()='Cancel']" fqdn_object_group_subobject_close_posXpath = "//div[@class='FqdnList list-box']//span[normalize-space(text())='Close']" http_signature_object_group_close_posXpath = "//div[@class='HttpSignatureList list-box']//span[normalize-space(text())='Close']" subscriber_id_object_group_close_posXpath = "//div[@class='SubscriberidList list-box']//span[normalize-space(text())='Close']" @@ -307,7 +307,7 @@ main_ObjectPage_import_files_error_format_posXpath = mobileIdentitiesObjectPage_ mobileIdentitiesObjectPage_Export_Mobile_Identity_Button_posXpath = '//button[@id="objectExport-_importAndExport_ElRow_Objects_mobile_identity_Home_App_anonymousComponent"][@disabled="disabled"]/i' # 导出按钮置灰 mobileIdentitiesObjectPage_Edit_Mobile_Identity_Button_posXpath = '//button[@id="appEdit-_OperateBtns_ElRow_Objects_mobile_identity_Home_App_anonymousComponent"][@disabled="disabled"]' # 编辑按钮置灰 # 删除按钮置灰 -main_Delete_Mobile_Identity_Button_posXpath = '//div/div/div[1]/div/div[1]/div/div[3]/button[@disabled="disabled"]' # 删除按钮置灰 +main_Delete_Mobile_Identity_Button_posXpath = '//button[@class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButton-colorPrimary Mui-disabled MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButton-colorPrimary css-15h645i"]' # 删除按钮置灰 mobileIdentitiesObjectPage_Delete_Mobile_Identity_Button_posXpath = main_Delete_Mobile_Identity_Button_posXpath # 删除按钮置灰 mobileIdentitiesObjectPage_selete_Mobile_Identity_Button_posXpath = '//table/tbody/tr[1]/td[1]/div/div/div[1]/div/label[@class="el-checkbox"]/span[@class="el-checkbox__input"]' # 不勾选Object置灰 @@ -519,7 +519,7 @@ listPage_object_urls_searchCreatedBy_posId = '5-_FilteredSearch_ElRow_Objects_ur url_ObjectDetailPage_nameInput_posXpath = '//input[@class="MuiInput-input css-fqt4w4"]' # Name输入框Xpath url_ObjectDetailPage_nameLenthNumber_posXpath = "//div[@class='MuiInput-endDecorator css-tob0ta']/span" # Name输入框中字符长度数值Xpath url_ObjectDetailPage_addButton_posXpath = "//i[@class='iconfont icon-Create1 font-[700]']" # “+”按钮id -url_ObjectDetailPage_itemsText_posXpath = '//div[@class="ItemRow infinite-list-item" and not(@style)]//div[@class="item-box"]//span[not(@class)]' # Items 列表下所有Item的文本元素 +url_ObjectDetailPage_itemsText_posXpath = "//div[@data-testid='virtuoso-item-list']//div[@class='leading-[24px]']" # Items 列表下所有Item的文本元素 url_ObjectDetailPage_item_subAddButton_poXpath = "//div[@class='url-object-expression']//i[@class='iconfont icon-Create1 font-[700]']" # 单个Item中新增多条数据的"+"按钮 # url_ObjectDetailPage_itemValue_posXpath = '//*[@id="router-view-container"]/div/div[1]/div[1]/div/div/div/div[1]/div[2]/form/div[3]/div/div/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div/div/div[2]/div/div/div[1]/div[1]/div/input' # Item value输入框Xpath url_ObjectDetailPage_itemValue_posXpath = "//input[@class='MuiInput-input css-1u0jcuo']" # Item value输入框Xpath @@ -541,8 +541,8 @@ url_ObjectDetailPage_itemsTotal_posXpath = "//div[@class='items']//div[@class='f url_ObjectDetailPage_importFromFile_posXpath = '//button[contains(text(),"import from file")]' # Import From File 按钮Xpath url_ObjectDetailPage_importFromFile_button_posXpath = "//button[@class='MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary css-bc4t0x']" # Import From File 按钮Xpath # url_ObjectDetailPage_pleaseUpload_posXpath = '//span[contains(text(),"Please Upload")]/../../input' # Please Upload input标签Xpath -url_ObjectDetailPage_pleaseUpload_posXpath = '//input[@type="file"]' # Please Upload input标签Xpath -url_ObjectDetailPage_importUrlOk_posXpath = "//button[@class='MuiButtonBase-root MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary MuiButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary css-k5thc0']" # Import URL 下的OK按钮Xpath +url_ObjectDetailPage_pleaseUpload_posXpath = "//div[@class='flex flex-col justify-start flex-1 MuiBox-root css-0']//input[@type='file']" # Please Upload input标签Xpath +url_ObjectDetailPage_importUrlOk_posXpath = "//div[@class='relative w-[100%] h-[100%] pt-[46px] pb-[56px] flex overflow-hidden']//button[text()='OK']" # Import URL 下的OK按钮Xpath url_ObjectDetailPage_importedFile_posXpath = '//div[@class="flex-1 truncate"]' # 导入文件元素位置(Import From File 按钮旁) url_ObjectDetailPage_importedFile_delete_posXpath = '//i[@class="iconfont icon-Delete_X text-[14px] hidden"]' # 文件删除按钮 @@ -600,7 +600,7 @@ listPage_object_ip_address_createButton_posId = "objectCreate-_OperateBtns_ElRow listPage_object_ip_address_createButton_posXpath = '//span[@class="action-create inline-flex mr-[8px] "]/button' # create按钮!!!!! listPage_object_ip_address_editButton_posId = "appEdit-_OperateBtns_ElRow_Objects_ip_Home_App_anonymousComponent" # edit按钮id listPage_object_ip_address_editButton_posXpath = '//span[@class="action-edit inline-flex mr-[8px] "]/button' # edit按钮!!!!! -listPage_object_ip_address_delButton_disable_posXpath = '//button[@class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButton-colorPrimary MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButton-colorPrimary css-15h645i"]' # del按钮Xpath置灰!!!!! +listPage_object_ip_address_delButton_disable_posXpath = '//button[@class="MuiButtonBase-root MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButton-colorPrimary Mui-disabled MuiButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButton-colorPrimary css-15h645i"]' # del按钮Xpath置灰!!!!! listPage_object_ip_address_delButton_posId = "appDel-_OperateBtns_ElRow_Objects_ip_Home_App_anonymousComponent" # del按钮id listPage_object_ip_address_delButton_posXpath = '//span[@class="action-delete inline-flex mr-[8px] "]/button' # del按钮!!!!! listPage_object_ip_address_del_yes_Button_posXpath = '//button[@class="MuiButtonBase-root MuiButton-root MuiLoadingButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButton-colorPrimary MuiButton-root MuiLoadingButton-root MuiButton-contained MuiButton-containedPrimary MuiButton-sizeSmall MuiButton-containedSizeSmall MuiButton-colorPrimary css-1aub58j"]' # del_yes按钮!!!!! @@ -687,7 +687,7 @@ ip_addressObjectPage_button_Input_Learned_IP_Limits_posXpath = "//div[@class='ip ip_addressObjectPage_textArea_Description_posXpath = "//div[@class='ip-object-description']//textarea[1]" # description文本输入区Xpath ip_addressObjectPage_button_OK_posXpath = "//div[@class=' ip-object-page MuiBox-root css-o7xelj']//button[text()='OK']" # Group保存主页面OK按钮 -ip_addressObjectPage_button_SaveYes_posXpath = '//button[@id="OK-_IpDetail_VDraswer_EditDraw_IpDetail_Home_App_anonymousComponent"]/span' # Group引用创建OK按钮 +ip_addressObjectPage_button_SaveYes_posXpath = "//div[@class='MuiBox-root css-1krxo6z']//button[text()='OK']" # Group引用创建OK按钮 ip_addressObjectPage_button_warningSaveYes_posXpath = "//div[@class='el-message-box__wrapper']/div/div[3]/button[2]/span" # 提示保存ok按钮警告框 ip_addressObjectPage_button_warningSaveCancel_posCss = '//div[@class="el-message-box__wrapper"]/div/div[3]/button[1]/span' # 提示保存取消按钮警告框 ip_addressObjectPage_button_cancel_posCss = "//div[@class=' ip-object-page MuiBox-root css-o7xelj']//button[text()='Cancel']" # Cancel按钮 @@ -706,8 +706,7 @@ ip_address_ObjectDetailPage_okButton_yes_posXpath = url_ObjectDetailPage_okButto ip_address_Group_sub_Object_add_new_addphoneNumber_item_inputName_posXpath = '//form/div[4]/div[1]/div/div/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div/div/div[2]/div/div/div[1]/div[1]/div/input' # new PhoneNumber inputItemName ip_address_Group_sub_Object_add_new_addIMEI_item_inputName_posXpath = '//input[@id="onlyMarvel"]' # new IMEI inputItemName ip_address_Group_sub_Object_add_new_add_itemIP_Save_Button_posXpath = "//i[@class='operate-icon iconfont icon-save']" # 保存item按钮 -ip_address_Group_sub_Object_add_new_one_OK1_Button_posXpath = "//div[@class='MuiBox-root css-1krxo6z']//button[@class='MuiButtonBase-root MuiButton-root MuiLoadingButton-root MuiButton-text MuiButton-textPrimary \ -MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary MuiButton-root MuiLoadingButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary form-action-submit css-1djnbgz']" # new ip_address CreateOK1 +ip_address_Group_sub_Object_add_new_one_OK1_Button_posXpath = "//div[@class='MuiBox-root css-1krxo6z']//button[text()='OK']" # new ip_address CreateOK1 ip_address_Group_sub_Object_add_new_one_OK1_Warning_Yes_Button_posXpath = "//div[@class='el-message-box__btns']//span[normalize-space(text())='Yes']" # 再次确认创建new ip_address ip_address_Group_sub_Object_add_new_one_OK1_Warning_Cancel_Button_posXpath = "//div[@class='el-message-box__btns']//span[normalize-space(text())='Cancel']" # 再次确认取消new ip_address @@ -767,10 +766,10 @@ FQDNsObjectPage_textArea_Description_posXpath = "//div[@class='fqdn-object-descr FQDNsObjectPage_button_SaveYes_posXpath = "//div[@class=' fqdn-object-page MuiBox-root css-o7xelj']//button[text()='OK']" # OK按钮 FQDNsObjectPage_button_warningSaveYes_posXpath = "//div[@class='el-message-box__wrapper']/div/div[3]/button[2]/span" # 提示保存ok按钮警告框 FQDNsObjectPage_button_warningSaveCancel_posCss = '//div[@class="el-message-box__wrapper"]/div/div[3]/button[1]/span' # 提示保存取消按钮警告框 -FQDNsObjectPage_button_cancel_posCss = "//button[@id='Cancle-_FqdnDetail_Home_App_anonymousComponent']/span" # Cancel按钮 +FQDNsObjectPage_button_cancel_posCss = "//div[@class=' fqdn-object-page MuiBox-root css-o7xelj']//button[text()='Cancel']" # Cancel按钮 # Create FQDNs Group Object 和 Edit CreateFQDNs Group 新增和编辑页 -FQDNs_Group_sub_Object_addButton_posXpath = "//div[@class='fqdn-object-included_sub_object_uuids']" # FQDNs_Group添加sub Object按钮 +FQDNs_Group_sub_Object_addButton_posXpath = "//div[@class='fqdn-object-included_sub_object_uuids']//i[@class='iconfont icon-Create1 font-[700]']" # FQDNs_Group添加sub Object按钮 FQDNs_Group_sub_Object_add_new_Button_posXpath = "//i[@class='iconfont icon-Create1']" # 新建sub_FQDNs按钮 FQDNs_Group_sub_Object_add_new_Select_one_Button_posXpath = "//ul[@class='base-Popper-root MuiMenu-root Mui-expanded MuiMenu-variantOutlined MuiMenu-colorNeutral MuiMenu-sizeMd css-131n2dh']//li[1]" # 新建选择FQDNs按钮 FQDNs_Group_sub_Object_add_new_Select_Group_Button_posXpath = "//ul[@class='base-Popper-root MuiMenu-root Mui-expanded MuiMenu-variantOutlined MuiMenu-colorNeutral MuiMenu-sizeMd css-131n2dh']//li[2]" # 新建选择FQDNs_Group按钮 @@ -806,10 +805,10 @@ listPage_object_Subscriber_IDs_editButton_posXpath = listPage_object_ip_address_ listPage_object_Subscriber_IDs_delButton_posXpath = listPage_object_ip_address_delButton_posXpath # del按钮id listPage_object_Subscriber_IDs_viewButton_posId = "//button[@id='appEdit-_OperateBtns_ElRow_Objects_subscriberid_Home_App_anonymousComponent']//p[normalize-space(text()) = 'View']" listPage_object_Subscriber_IDs_delButton_disable_posXpath = '//button[@id="appDel-_OperateBtns_ElRow_Objects_subscriberid_Home_App_anonymousComponent"][@disabled="disabled"]' # del按钮置灰 -listPage_object_Subscriber_IDs_reference_count_posXpath = "(//div[@data-field='reference_count']//span)[2]" # 引用计数 +listPage_object_Subscriber_IDs_reference_count_posXpath = "(//div[@data-field='reference_count']//span)[2]//parent::button" # 引用计数 listPage_object_main_reference_count_posXpath = listPage_object_Subscriber_IDs_reference_count_posXpath -listPage_object_Subscriber_IDs_first_reference_list_posXpath = '//div/div/div[2]/div[2]/div[1]/div/div[3]/div[1]' # 侧滑引用列表第一列 -listPage_object_Subscriber_IDs_second_reference_list_posXpath = '//div/div/div[2]/div[2]/div[1]/div/div[3]/div[2]' # 侧滑引用列表第二列 +listPage_object_Subscriber_IDs_first_reference_list_posXpath = "//div[@class='overflow-y-auto h-[100%] pt-0']//table/tbody/tr[1]" # 侧滑引用列表第一列 +listPage_object_Subscriber_IDs_second_reference_list_posXpath = "//div[@class='overflow-y-auto h-[100%] pt-0']//table/tbody/tr[2]" # 侧滑引用列表第二列 listPage_profilTable_FQDNs_reference_first_row_posXpath = listPage_object_Subscriber_IDs_first_reference_list_posXpath listPage_profilTable_FQDNs_reference_Second_row_posXpath = listPage_object_Subscriber_IDs_second_reference_list_posXpath listPage_object_Subscriber_IDs_del_yes_Button_posXpath = listPage_object_ip_address_del_yes_Button_posXpath # del_yes按钮 @@ -854,7 +853,7 @@ Subscriber_IDs_GroupObjectPage_textArea_Description_posXpath = "//div[@class='Mu Subscriber_IDsObjectPage_button_SaveYes_posXpath = "//button[@class='MuiButtonBase-root MuiButton-root MuiLoadingButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary MuiButton-root MuiLoadingButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary form-action-submit css-1djnbgz']" # OK按钮 Subscriber_IDsObjectPage_button_warningSaveYes_posXpath = "//div[@class='el-message-box__wrapper']/div/div[3]/button[2]/span" # 提示保存ok按钮警告框 Subscriber_IDsObjectPage_button_warningSaveCancel_posCss = '//div[@class="el-message-box__wrapper"]/div/div[3]/button[1]/span' # 提示保存取消按钮警告框 -Subscriber_IDsObjectPage_button_cancel_posCss = "//button[@id='Cancle-_SubscriberidDetail_Home_App_anonymousComponent']/span" # Cancel按钮 +Subscriber_IDsObjectPage_button_cancel_posCss = "//div[@class=' subscriber-id-object-page MuiBox-root css-o7xelj']//button[text()='Cancel']" # Cancel按钮 # Create Subscriber_IDs Group Object 和 Edit CreateSubscriber_IDs Group 新增和编辑页 Subscriber_IDs_Group_sub_Object_include_addButton_posXpath = "//div[@class='subscriber-id-object-included_sub_object_uuids']//i[@class='iconfont icon-Create1 font-[700]']" # Subscriber_IDs_Group添加sub Object按钮 @@ -1055,14 +1054,14 @@ Keywords_GroupObjectPage_textArea_Description_posXpath = "//div[@class='MuiTexta KeywordsObjectPage_button_SaveYes_posXpath = "//button[@class='MuiButtonBase-root MuiButton-root MuiLoadingButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary MuiButton-root MuiLoadingButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary form-action-submit css-1djnbgz']" # OK按钮 KeywordsObjectPage_button_warningSaveYes_posXpath = "//div[@class='el-message-box__wrapper']/div/div[3]/button[2]/span" # 提示保存ok按钮警告框 KeywordsObjectPage_button_warningSaveCancel_posCss = '//div[@class="el-message-box__wrapper"]/div/div[3]/button[1]/span' # 提示保存取消按钮警告框 -KeywordsObjectPage_button_cancel_posCss = "//button[@id='Cancle-_keywordsDetail_Home_App_anonymousComponent']/span" # Cancel按钮 +KeywordsObjectPage_button_cancel_posCss = "//div[@class=' keyword-object-page MuiBox-root css-o7xelj']//button[text()='Cancel']" # Cancel按钮 KeywordsObjectPage_button_range_posXpath = "//div[@class='keyword-object-expression']//input[@class='MuiCheckbox-input css-1jj0cvj']" KeywordsObjectPage_error_text_posXpath = "//div[@class='keyword-object-expression']/div[2]" # Create Keywords Group Object 和 Edit CreateKeywords Group 新增和编辑页 main_ObjectPage_tips_Name_input_Xpath = "//div[contains(@class,'object-name')]//div[2]" KeywordsObjectPage_tips_Name_input_Xpath = main_ObjectPage_tips_Name_input_Xpath # 删除失败,Name提示框 -Keywords_list_reference_content_first_raw = '//div[1]/div/div/div[2]/div[2]/div[1]/div/div[3]/div' # 列表页引用第一行 -Keywords_list_reference_content_second_raw = '//div/div/div[2]/div[2]/div[1]/div/div[2]/div/div[2]' # 列表引用第二行 +Keywords_list_reference_content_first_raw = "//div[@class='overflow-y-auto h-[100%] pt-0']//table/tbody/tr[1]" # 列表页引用第一行 +Keywords_list_reference_content_second_raw = "//div[@class='overflow-y-auto h-[100%] pt-0']//table/tbody/tr[2]" # 列表引用第二行 Keywords_ObjectPage_content_inputItem1_posXpath = '//div/div[1]/div[1]/div[1]/div[2]/div[1]/div[1]/div/div/div[1]/span' # 第一行输入item的内容 Keywords_Group_sub_Object_addButton_posXpath = "//div[@class='keyword-object-included_sub_object_uuids']" # Keywords_Group添加sub Object按钮 KeywordsObjectPage_Keywords_button_input_more_Item_posXpath = "(//div[@class='MuiFormControl-root MuiFormControl-vertical MuiFormControl-sizeMd css-w2y0fh']//input[@class='MuiInput-input css-1u0jcuo'])['replace']" # 输入keywords_item内容 @@ -1236,7 +1235,7 @@ acc_ObjectDetailPage_item_subAddButton_poId = "//div[@class='account-object-expr acc_ObjectDetailPage_itemValueInput_poXpath = "//input[@class='MuiInput-input css-1u0jcuo']" # item 下value输入框Xpath acc_ObjectDetailPage_itemSaveButton_poXpath = url_ObjectDetailPage_itemSaveButton_posXpath # item 下value保存按钮Xpath acc_ObjectDetailPage_item_search_posXpath = url_ObjectDetailPage_object_ip_search_posXpath # item 下搜索框id -acc_ObjectDetailPage_itemsText_posXpath = '//div[@class="ItemRow infinite-list-item" and not(@style)]//div[@class="item-box"]//span[@title]' # Items 列表下所有Item的文本元素 +acc_ObjectDetailPage_itemsText_posXpath = "//div[@data-testid='virtuoso-item-list']//div[@class='leading-[24px]']" # Items 列表下所有Item的文本元素 acc_ObjectDetailPage_description_posXpath = "//div[@class='account-object-description']//textarea[1]" # 对象详情页面下Description input Xpath acc_ObjectDetailPage_auditLogs_posXpath = url_ObjectDetailPage_auditLogs_posXpath # Audit Logs Xpath acc_ObjectDetailPage_auditLogsDrawer_firstRowLog_checkBox_posXpath = url_ObjectDetailPage_auditLogsDrawer_firstRowLog_checkBox_posXpath # Audit Logs 侧滑页第一条日志CheckBox Xpath @@ -1298,6 +1297,7 @@ acc_ObjectGroupDetailPage_excludeObjects_posXpaths = '//div[@data-desc="exclude # 详情页通用元素 acc_ObjectDetailPage_mainOkButton_posXpath = "//button[@class='MuiButtonBase-root MuiButton-root MuiLoadingButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary MuiButton-root MuiLoadingButton-root MuiButton-text MuiButton-textPrimary MuiButton-sizeSmall MuiButton-textSizeSmall MuiButton-colorPrimary form-action-submit css-1djnbgz']" # OK按钮ID acc_ObjectDetailPage_okButton_yes_posXpath = url_ObjectDetailPage_okButton_yes_posXpath # 确认弹窗的“Yes”按钮 +acc_ObjectDetailPage_cancel_posXpath = "//div[@class='relative w-[100%] h-[100%] pt-[46px] pb-[56px] flex overflow-hidden']//button[text()='Cancel']" # Object Accounts elements area bottom===================Object Accounts elements area bottom===================Object Accounts elements area bottom===================Object Accounts elements area bottom===================Object Accounts elements area bottom=================== # Object Accounts elements area bottom===================Object Accounts elements area bottom===================Object Accounts elements area bottom===================Object Accounts elements area bottom===================Object Accounts elements area bottom=================== diff --git a/testdata/ui_data/objects_data/Accounts/base_accounts.json b/testdata/ui_data/objects_data/Accounts/base_accounts.json index 94952792..f78f24bb 100644 --- a/testdata/ui_data/objects_data/Accounts/base_accounts.json +++ b/testdata/ui_data/objects_data/Accounts/base_accounts.json @@ -196,7 +196,7 @@ "Model": "create", "Type": 0, "Name": "", - "Search type": "ID", + "Search type": "Name", "Items": [ "[random]->" ], @@ -208,7 +208,7 @@ "Model": "create", "Type": 0, "Name": "", - "Search type": "ID", + "Search type": "Name", "fuzzy_search": "True", "Items": [ "[random]->" @@ -308,7 +308,7 @@ "Model": "create", "Type": 0, "Name": "", - "Search type": "ID", + "Search type": "Name", "Items": [ "accounts_item导入文件.txt[ImportFromFile]->" ], diff --git a/testdata/ui_file/objects/import_file/accounts_item导入大量数据文件.txt b/testdata/ui_file/objects/import_file/accounts_item导入大量数据文件.txt index ddfa9069..886ddffe 100644 --- a/testdata/ui_file/objects/import_file/accounts_item导入大量数据文件.txt +++ b/testdata/ui_file/objects/import_file/accounts_item导入大量数据文件.txt @@ -1,1011 +1,1000 @@ -a01enxgx -a01enxgx -a0 -a0 -12 -12 -a0 -a0 -a32 -a32 -a0 -a0 -$cobfcdo4 -agskrtll* -$89haj5yd -$u8dhkmw4 -*frvus951 -j39bwunh -t45lxfe9 -*zc6nl4yl -drm8el1a* -*f0w9r4zu -3c7i8w3z* -$ng47wcdb -*aeyep0y8 -$nswvzg3a -64swljil -y5b0ioq1* -$37h34sk7 -x0yqk7qo -d59kc2jg -pov20xif -*9c5ofmyn -$adpi49gx -4p4uckim -kwu0px5c -*g5p0uqzz -ql0e9sq3 -vep6alr6 -izi35664* -*mip3resy -*i6vn080k -*g5g4e174 -$nd8ji75k -$d5gg7q6b -cpi0r3dw -eocwqk4a* -$02b8fdv8 -kzr0t9ax* -0awspoqb* -*9v3ds0n5 -*cjyy3haz -*eza2o1n0 -*xkrdomvf -*914vpc10 -0ip52fmw -$mtt0qagg -$daumb7lk -tz6ta9zj -fxawmpsh* -$b05xs9zt -$gfnlaru0 -sgsvh7xt -jyvvdzq0* -*dn5dhl01 -$p14ui9wh -$4et4b8a4 -$fv77xai2 -$tb0q4r3y -*74keb01k -vvtuceg3 -$5iwm3t1q -767zse0p* -*ka3ayrog -*y6858lga -*hryynq3h -*7deie13k -$rdt678eq -$d6rx6v18 -m1hpkwfe* -rhyo88o5 -1vwpajbu -$gxq5c3l1 -$v0yu867c -0dg0h1xk -$9j7h0xw1 -$ea8583g3 -*hygc3ryp -5a2ggd2l* -oy8qcvrp* -10lel8lj -urcf0lcz -$vn4e34al -*3d5lfkjt -*noboke25 -*p7gcnd8u -$u58spo2b -tp1i2hae* -5itd9nht* -xt875qlw -$toa70xuk -$3dl07jc6 -y8ksuwkb* -*ms9rntvh -$qy8btbgb -xlc3bwfy* -ncvs2o1l -*yb0odbzd -$62xapejj -ri0uqwr4 -13dy4dob* -zm1g47r3* -*kg4ufbcg -$3lqqp668 -*syhhljpb -$pwwqsbhu -*gigtg0ez -*asc7n82w -3s5zfn55* -$9cjuo0nt -*5j8zlv9k -$i87lgmtk -ym6a5w56* -zd0009fa -7sq9blew -zsqmij2z* -ksifirru* -p8jzq875 -$9gn071hx -hsf4pv0w -2z9ffm1c* -13if7bg8 -lb69ueoj* -osae2l3f* -k2fl4zk4* -$qhukfowf -$jespk5z5 -$deu9lehk -oekuvznq -$kndhxvuq -$p5azcmf1 -$lk6pt9qk -*2ziz1znf -$scembj6r -07m9al27* -$pguwbfux -*yp4a32d3 -1h12qvyj* -$kegncw3o -*wbc2jawc -*ph4kdrtj -4pkf6prf* -$lwdjnuml -$1ct87hsj -$u6489jcq -*dsxj31g3 -*72ngmk0p -*fna2h0zx -ibr597jj* -sfpvn47v -44usmm5j -*s8tn32g6 -e31k4xh8* -bj0lteha* -$vg49g2y8 -8vtl1cea* -$8kgsas2z -$yiytauue -$h0oqlu6d -*ax87o56d -1p6ouhx5 -lc1vp244 -psm4k45n -1385xfye* -$zsp4v8cu -*8wo7p8vl -$31ipv96g -pyjblhee -$3pezbxow -lbrjx1mo* -*somsd8er -*60qzherm -$lr71rs38 -1ky5g1rp* -nqidyb4r -*c9ndyop5 -h051pfk1* -$c271dbbx -*6bj51o7u -$jdkv3h1k -ycgpq9qo -d9lg5h8r* -$q7vmwhoo -*0i4f1m6r -*kxc5bh11 -*251lkpd5 -*xbfvkjod -*xldzanq1 -$by6m1w63 -*gzyj2tpx -*frrh1gis -1r7ehhg4* -gcxxjmw0* -$8kqd1l4k -78339cf0* -4hsn78tc* -$3st142x7 -7phclz2x* -$rzhalgtj -*cf86lqy7 -i2olf7uu* -*nqd1j63x -4pnkme22 -*75n53et6 -k9tyt15p -$1uutnatv -*u7u56qtr -*r2n5trxb -$74a1dx34 -*l93lbdrh -$rwo6uhpt -$h3b0c3rq -*yzzovv8d -whoccj7a* -1t1q746c* -*nqxyvdg4 -$rvljrju9 -$q396egxq -*4xjbu6ob -mqsiuli3 -*c3tlbzpw -*0aiybrk8 -fvkdqcxh -28tvp4kz -*zj3427lc -z3ueoj4q -wzlcorz7 -rtns8zeu* -lk805dyr* -jesnri39* -gjqz2z5w* -$78hcrs1g -$qgr21esb -*2k6m9yqz -v6xu9ncj* -sokzy41o* -h3l58bqu* -$j3hehz95 -9s84v3hd -$btzviv6f -jqwcaidq -9mgdfxdn* -$5947o79g -$nnwmx98j -*ifu0vlap -um9t1dei* -za8z79s1 -$s75wy7t8 -ype39fb6 -$sf4ttvbq -460wk347 -$2ksb5xv3 -bim2r4mt* -h9mu5swk -4ddxl560 -6q7b4pr6 -542ryuae -vimhkken -$kf3ruzkm -*1lnl7rg0 -y9b11j2b* -$6fj1pjfs -*uxb2o8rm -wxgl1rhq* -$m5yt3hgy -9xjamfhf* -utz76xvz* -*vaoo4f2j -8qt687kc* -mp2aeatu -*tzkxmvun -$gm5aaksk -*1tmlv36v -7dr5o577 -dannqkbh -jvqgfd7a -8ydbesrn -$iuuvghim -m35pbnav* -*byq91unv -$eso3oo7r -*rr44r4yn -rze9opy8 -*z5t96msn -$xc7lyt3i -7i93vmaa -$s1za9uoe -$0120azlb -$eazhk1th -$70qh9hpd -dfub5ylx -$n6hn6049 -epxnk11x* -*qsear1gj -dpl6t4cv* -8ioahvsh* -osgaazln -iwdum9gl* -$vkvhnbxz -$vbodhhc3 -*u2zd74r9 -ned1qc0i* -$ghlqb546 -$bbk7dxiv -853b3wxx -3vhj2yl0* -av08aic2 -$sxj58upa -$r6md6jy5 -*2vh3mdtx -*24fi0qpb -c9isq4ie -*9oqppj9j -5o9uj0ec* -rqvvn4ho -*9nkenf9i -*tcx2xi7b -2kldzy1q -$eq07qqa8 -j7mh9i0n* -$a3guipwd -mekboo07 -opr003up* -$h8ndhdrc -saqosme5* -*yeogujqm -nd1efono* -$917lbtaz -*p3c36jtl -*d19384ex -*25673kuk -ck6iiahe -*r3ynxp8p -yesvqxkz* -$h8tfjej0 -7zufpj1u -*hp1d6p4k -$hoxmz2mc -$z15y0gh1 -bvb1rai2* -$hnzax8ym -$bxou19n4 -*q90836ag -gph52qvd* -hi62l1e9 -i7lfhlwy -2xqhbli2* -*i7bypddm -$rjwxzzf4 -$f58ns5ct -hgf9nvgj* -$zufr4a7i -cj6wsi01 -*bg4cmg68 -*luht6j9f -$ezkqqpay -$l7dj9jvo -*avd30ow0 -$h6sd7r0e -a4r3p4a4* -*220efiaw -$gu0qi4zz -wjphha6x -fr8dwgp4 -$2rkup3qi -*tfcl70ln -3p6mbzhb -gjrjd7q7* -u4e0psgr* -$45qoylks -evbauqc8 -huy2mwlf* -c8ds0trn* -5sr3rufg* -*l7ts7fsb -$j80m168y -$6vnt1dyq -*862kduvu -41zd681b -$aqa5plim -*7ugnx2ch -bjejevhg* -$cwxz8trr -*s489ikfk -*93is11ow -$04l6o5qu -vai637eg -lfvq5p41 -$z6yksqew -kv9uct8k -*926x80vs -*0a54zjxp -$kljq89ix -wp309n3t -sa3q3njn -dxpky1dg -scarav6v* -*467urmcp -$j73iim0y -$vax9gu8y -8mp37e7v* -yn56k52n -*jg755jvo -*8nfkvswv -*7c841mw8 -$e993f3z3 -*fr4xlr0u -i00fzab9 -4ve2w37u -4kfp7366 -$g2utj3jr -scssiyzn* -fikw9zfl -*s39wvxw7 -hjxo9bqv* -*e5iyraif -6k8u0u8n -$dyt0pczc -58piuui5* -w7httzja -jyqi42em -ryfrofih* -qdpss82h* -misqbjxi -$bg04j5lq -1nlopeo5 -*30mzuyqv -451o864k -*o88zfy0u -*p6ctan6t -n764vwi2* -m4yu4wt8* -blnb6ift* -*ftknccoy -*mj0qfvvs -*6yef1jtc -5w8t04h9 -ooiredyr -*eu7wak66 -*d8zlblrg -$m29t27g9 -n3mdzbtd* -3h7f8woj* -*vx7hre35 -i8syeomj* -1nkqpyel* -*a80cly98 -$6lrv5cur -$yvm5x4w4 -*xiu9wjf2 -$woo9trat -$o7pf1vpv -wmdcjhyd* -mrac0drh* -*8prmlcz4 -22kinl91 -ne9n83r9* -fy1vlt5w -ngkzt5cx* -jq6fe4ch* -$dcfwx5x2 -*pzxuklrr -*gb2a2dd9 -*hqduh89i -dfgbe6sr* -x63g3wwo -z9fchk3k* -*qkpgwwm0 -$1rccqvyp -fd9vbt11* -gt3ftvqw -$jh9jqxbh -lc3gqil9* -*2ska2nm4 -*5gx7is7h -*yh0lvgjp -*jgbqbsch -up7u49nu -b7ck0sxh* -*c7mnmjzi -0iro261g* -lzl6ux3d -*hdkgiwdd -*xjkq4pey -s4q21tc1 -$3gly5oh0 -qxjo7njq* -*k26l7cwz -$vygol41u -jpucbavu* -*yr6eu013 -kis1tpsc -$23n6874a -mqzy7k5p -*7fvzn5m7 -e2qz3cr9 -*vinxw0bb -rr0no4s1* -$7n13umik -*kpxnmyns -2c0cbwlo* -97dn5p4m* -*ywkxcylu -$e8aixt8m -5uraa3nf* -64c47is5* -c2yfi7hc -77wmjlte -jluwjcs8* -4dsqtbsv* -$3pjiff3h -*6u0aes30 -*bdfgdu4w -8vhc0pp4 -*4mondbmu -*xr5vhu4c -*6wuattum -fhekisr7* -86zg535g* -q23jkcab -i79e3lbz* -5kcawzs6 -p2mw9rnp -$p7v4gj3m -$bdt78s6i -*z7j1q7qt -u73w5i61* -*0omgbktk -bbey7v5j -8eff1lsv* -*i34bm5o2 -o2vrdc6m* -*8asu219n -*ck00d34t -jxpfeieb* -wseikh1h* -0on8ueft* -ganr18te -9tbxcuz3 -$tkutrujb -$wqhyss43 -9ykgyqyk* -$vt1mqowq -bnyvn18d* -hh2c1v6s -c225vjce* -$uc0d9i82 -*91jg7dp3 -$wm2jnwz6 -bzf805io -0u5faowl* -*1a2m79t6 -$gjx10oo9 -*h2cofrt3 -w0po8pxw* -2x47zv4i* -1d9f4f8f -*3aiarwfl -$a0amd0m8 -*al3aiiu8 -1i28kccb -$ch1s3kyi -$0pjjxo9t -zesw4xnv -$a5tj9jop -wsbhx634 -rdb6ilod -llfqisbq -69tyac4k -wt4brhm9 -x5x1k2nj* -*anvokn76 -uj693wc2* -$wovslwfh -$lxt5xuum -q15gcj6o* -3o25u3aa* -$iih3tfc8 -n8t12dhn -2zzlmms4 -z7ekx62s -$rrdqbrv1 -*s2ydryq0 -c57mpvc1 -*bma4fim6 -16rtc5eq* -$w98bqyib -*gvbi2nfk -$p3p534pg -*4nnbrbrp -$drf2c2y1 -xyx37aib* -upza4100* -*pk3ho6is -qvqhqlie* -*5l1v5e5k -7ev8gfr0* -rmzf5w84* -tz3rmy5e* -br4sq7c1 -$uzaztkgc -65ys7d4g -*vg2cqaw1 -0ccu5r6p -9dm1vkwv* -h7sol97k -4i6qkg89* -iv6m708b* -*ojke2x6b -2oi0hndh* -ag7tg72b -u5h9ia07 -88uz80op* -*2isew440 -3b7aeayg -*mbxufj7a -3b8dug53 -da8p1mpp* -*lzq3hsxc -i8zgfyj3* -$8x3s0qnn -zrjokcbj -*rnu3ojjk -fke2qttb* -$i0x70aps -clr12tjb -mbxitrmo* -riagp1xa* -$cndk451o -*1bqdmnny -*4n37uxcn -*ed7k9tgg -tc111qn4* -tqlal1j9 -zu0u73v2 -$lwoqzhkw -nd8jvast -hrkq85sy* -hiqqde95* -eo2kz946* -t1gp0w28* -$xi0rkw3i -pfttjsr2 -*1lgdhuv9 -kky9acj2 -*qk5yu9ta -opy0cg25 -zu5lnk7e* -9y4b5r13 -$6qkilfek -euha9zfr -l8k8x41q -y93ghrt1* -*hnswnlxv -*jy99u98w -zo2efjn0 -p4zcpzps* -u87nfbh1* -*3u4ol1ae -wo7d6s7w* -h1f37lja* -$g6y3qqss -$7rw2f9wg -$f6ngp1f4 -$etmy8qs7 -5vts4ev6 -*lb8mmivu -m5o6ncnp* -$06ddz39c -gqwaqivv* -*hyflu8gr -$9phz5nay -rnq12uzh -xuus5z1j -spo420x4 -*iuq4lsns -t9uvlvp0 -*11q0e9wf -$lh8dysqw -41qblss1 -*m8km94c1 -1czzljoh -oxbs8di6 -1ozbeqb2* -$51g7w9ot -8em3o8un* -*yocypwur -$za17f73z -$ij2ruxow -6ul9r0pm* -$z558ja74 -*nq42rixy -*h9hzwaki -fh1xkw4w -$f1vb1ay1 -uwtqei8h* -*g5qfz3lc -o17qd25r -3o70iffb -*ydsg5zuv -$w6fnwk53 -zdon5qii* -rry11f89* -*p5s4456i -$9bjb30q4 -aougn9e9* -$gzoronyg -x5q6d0av* -*vilf8zhw -kbghtwgg* -*92cuijbt -mujtss2y* -3uyyl9ne -$qt2m89iu -tr860hxl -8s2mm1c5 -$0smpmhpo -693ttkoy* -*ssgk8qn4 -vg879nqa* -$lqjanhxc -7czyzc4k -*wniz8k9t -*vuh31k2h -zd15a5m5 -6hvsptln -*f706v8l4 -$h9endnuu -$1ou0bx6q -$mj1onxg9 -*jigqk0e0 -p0ylpwd3* -fyyf01ck -2pqs2vqr* -j78myiap* -vog9xcv5* -vcx7d2ie* -2vfdc6if -*gxxa0kpq -*nfdnydtf -ljvmumpw -$wb7rivkh -4ne80p13* -*w6igpv6d -udseo677* -*g68hsh3s -$nvij71zf -$bhrycm36 -86vujk8o* -qhz2cjas* -fnb8lk05 -$qry8ryt5 -7q8fltdl* -$3886ldhb -02k4jl0b -tmhlqzcz -q85ff988* -$jxxrykvu -*9asuzyfr -*r09ir5pf -*1psevu9a -$zebsiop6 -aklgnaux -a61kv256* -*ifmfltxo -y7zdlun1* -r1lpl9kw -$v912d59c -*3yrd04cs -$p5xe2ss3 -$0m5ddga8 -$81onnvuc -iqajqn8e* -3p2kclap* -fo0i8yms -upjnqs5v* -i6y4k7cc -*dona9rkf -$o93zmtf4 -$4din1kn4 -*aap70nx3 -ehqvdzt5* -$du09x2me -$vha5hgua -*35yjb9h7 -ftxcpgnd* -6wmmd77f* -*cfkwax53 -*tela5fm3 -xc330ui5* -qbwt2cyz -$z9u2ldre -izesxckz -7myop1an -$uyldeco0 -$7irivxrj -kbygmdji -mfa5wx06* -fssgrzj5* -i051izlc -*q0asbvpv -*jgw762pi -6wwnq2zb -2w9ll2yo -$f99fv6kz -*h31ei1wz -tbixbkyj* -xquivimw* -$xd87unck -*mxahhuds -*2qzgmypf -*06zc7uwn -$rf3mez03 -$rbmxdxy5 -$vdg83oly -*y1j63669 -vwdto6j0 -$47hgwz27 -c7xex3l8* -iwrqmckx* -cxuama4l* -ljqiiuot -$f7xriqrj -$er5ufvuy -*sfkfq5gx -*7ibuwuey -dkt3209h -*r8ma2enf -uhnuum6t* -$ov1dyytm -*uonfn0zo -ywsvtzgd* -i1ycnfet -p2u4c416* -*1h2wsimy -*l8frn7i7 -0p8tb622* -*uxsboq8a -8m1ffknp -*hxoadabe -$9cpanamr -$31hniavl -nvudlk59 -$o327uw2p -*8zz3pv7j -6brw42c9* -$k9gomtkw -$3ah4xzqu -h866mcub* -$uzjdv90p -$wanxuqdq -*tf1xwfii -2no4y2ma* -$j3mq3q8v -gbgsvlap -*80nxfand -*ktmf1yjq -$lmmka11h -$1a5xaf0k -fwmn3w8u* -$8sjrgn8j -$d61eotrp -$1zn00919 -ahdoztfk* -*m8dpmywb -xkev3nl8* -1zjpykgc* -$mpsi75t4 -if0t3bon* -d6ut2pwu* -*wmeidiwu -u3c7lb5o* -*8k6yu30f -d37kg8lh -$0sndm8n8 -$v51n11ia -*b116hek8 -a29s015h* -$g2vsrd1y -*2hkm6jnu -fi9vjasf -bfbpqefe -hsg927ri* -$oj4apc6u -o3vzxpcx -*n7p52ia1 -zk4a02j3* -$kg2vdah1 -3yzoeeou -*xptiym4a -*w66fe9pa -*nfihftdj -*3cbr1aj3 -7e668x7w -$gzmbwl73 -*4uc1wfrq -q80t4vv4* -g9d39oqw* -$njcmurdg -*97ag8bk8 -$dv2yr0yo -ve7zye96 -*rgl7l3b7 -2724l9py -$re9eks9a -wmtcc2wo -*hcvsh4zu -*8959cogo -re2qdukt -tz2xjaoh -m33c84pd* -*ym0j8akn -qexb1far* -*7j55jkij -1awx4z8t -$atal039r -o2flqzsu -*62lkwndk -1ma496da -$rvg0mnbc -ogwfhucu -sid0akjm* -iayt841j* -sem0xmk4 -azwwylnu -3qknn7hz* -*p1p4pyqn -pn36a698* -$rrhmqfkj -$3dtkvr4u -*hyygseev -*v19deh7u -*wdbib06a -*airdh5xs -*egewg68z -*zyholzk7 -*p2pd9b7a -$7v6b3wle -*3kfaj4rr -3yv19us7 -*g61yisnw -71w1u74e* -9oixoxq3* -*kikbz6r2 -zhzobgjm -*0u09wh97 -zhjhqezp* -ohrhdsx8 -fs0y67nh* -ne3lpm5u -$12aner9p -1g8vuo6y -juwz8r32* -$34jqn9n6 -*jk7yijc4 -ih6aetiv* -aveohpv4 -*xr2kra1q -$jkoa8425 -$dfxlr7a5 -$4mb6jg2i -*wnybb7kt -*1uejfp4b -*6a9316dj -imfqt6jh* -cutkprqp* -*w5sutafe -$eawdgtfl -ngfa2c4a* -*6ytty9y7 -$ur2injxn -*nnb8bdup -$f4s9s7i9 -$yi02pk2r -*l8ry9x4f -$lz1g4os1 -*04dxiy99 -svjn77r9* -54zl4s8u* -vophwj56* -*n5guppc6 -4y7vtp7z* -98bvymzc* -ndmu9n51 -*0nsx56ss -m9c2mh69* -$1ev18cdl -6e13ujl6 -$buxbdvdo -s4s201nk* -*xffzoplj -i3mx4fib -*kj82xop7 -rzwryeau* -noabploc* -$3fvehn56 -*61r16ri2 -$u3p6tv10 -$xgrkdxso -$sq4k1x57 -*jtr06r9t
\ No newline at end of file +^ll9wgwpf +eqodoqso +ral0avhm +0xgek8cv +p3owaz17$ +5q6ifb3x$ +jolk8131 +^rwnve9ez +^p7ezvpyw +rzx7tfck$ +^k7y442w4$ +^qlyabpp8 +^ixx3gjiy +fn5lj8i4 +^gx4oakxf +^91eo1kn9 +^7wh8ojhy +75pxldec +qr7bda23 +grxifvz7$ +r36nlt8x +sc9rg49x +b7o4x76f +^bntuoeyw +^73lhg4oj +r3y1rs13 +tqpz2ztb$ +z9mxvi3c$ +dkh2udil$ +c72538jl +^yw3hsspu +^hhe508dr +^ahodzyq3$ +^pxxuguqg$ +^i67xcf4b +8bi3yrs9 +sk4s31sw +g88r5ota$ +^h5oxeuvd +^axq1o376 +vdazh3nb +oa3u2u2k$ +^rnkl3pl6 +^eopuqww6$ +^yyv5vo6h$ +^541e23hw +bn45b51h$ +^tjog6fyv +cvkuqfni$ +qnpyn2ur +^6g4cthnn$ +^m5l4hroq +8igx78q3$ +^3lzzcvrw$ +grdh0cro +^au2kzq2i +kcg659j6$ +sdt63csf +^j92vqq6p$ +30n4rwk4 +of2uxzhj +yjkugiqj$ +^3tura0x9$ +^0ba0s7b3 +^li4adtmi +tb7gynqi$ +^i178rz82 +gz0zh0jb$ +co6t0e33$ +qwd7xkjm +^8mhwf0fd$ +xf4s7gfi$ +^gg617jfe +^htpaw9om$ +7gu3zxqu$ +oyawj244 +da84sbu7 +^452wj8hj +^ulbjv978$ +^pedeemrw$ +bg2py8nz +uo8dppce$ +pif208hd +3ui985gz +^brsu1gaq$ +ln2yj8vk$ +79nwgikx$ +^35j0n1yk$ +^nshiwrn2 +^cojc0k5m$ +^kf19hve8$ +^07ic6yua +^pyp0uz0m$ +krzz2ikh$ +^i10zk0pq$ +^u15i9dp4$ +on5iirdm$ +tda2f1pm$ +^d13t6utt$ +2md7lk2c$ +^t5vj50pi +^3m5bme95$ +2vu0imbc$ +47s8fwnp$ +cwpaas35 +iy3hrw4u +vlvlg28c +bga7ay21$ +^nl3y790e$ +^zkttw5t7$ +^oo7ko63e$ +v2l03uny$ +rdo0a8je +670met3l$ +^yqq7gqc9 +^3fo25o6k$ +qnx5led3$ +^cf9ecga8 +^f224wt1h$ +^e3fwri4n +61pkm9xx +zxhxde1l +s00v0znb +^y6djijxe +^83rmnt86 +3q5jyjxs +^ng0bmcbg$ +6no6rffc$ +zewvyiam$ +fv05xz98$ +^v2ahb97r +sfqd4ekp +jln54nch$ +f8r1eatm +^3re6dxk8 +fjyq6opa$ +^jr38qs32$ +o44kgvdg$ +98tsz9y0$ +^f19hb8j0 +mdzl1kb3 +kbn6bu16 +33h607h5 +^nefdjhf1 +^9d7ossqe +1gpln5kx +^x36easmi$ +^i0ghmncw +^4kng90h1 +^qdt4jviw +luo428aq$ +sh1lbbx2$ +2mt7x29e +^0mrgzzte +stmnqpsj$ +^c3xn62d9 +^lfiz8e4d +i8vq6td8$ +hnpg6owt$ +mpehvosk$ +2q1ljosx$ +hcos3c8j +^f62up9cr$ +^3v1lnnco$ +7ycwo699$ +^mgmav1c4 +8ehy5vdv +s7yrxbca +uxub10e5 +^vdlh3x1m$ +c75k1kgy +tu1erz5s$ +^08vwoz3p$ +j5m0chxd +3atp93no$ +^lttb8xd0$ +^xedelas1$ +0hhbd7mn$ +^f4og2h6p +^dyigwdvf$ +^m88x8a5s$ +yhu6f5rh +tudn63my$ +pdr0tum7 +^rho5z216$ +ziws55hq +^7h34zvqe$ +pmdxbmgr$ +^fhkc6cfy$ +^j02phqui$ +9o9gw4xm +m0s75tcp +^3inlptgz$ +6ni6ilqb +^7vnnz9n0$ +ji2flk1e +^lqivrehl$ +k9uuuhs8$ +^7jab5ht3$ +qmivz47e$ +^cnke7rk2$ +^tnwmcs1v$ +^b8q2vzbe$ +070ud2km +ez7pc5cj$ +^iqspau24 +^fc6x5tk8$ +^co3hrobj$ +c1yo4gzo +^t235cqq0 +^etrz7udw$ +camvm18e$ +z1yilydg$ +2ctu80hp +^rqfzdlan$ +^x2vazuco +^eom9g6nu +^1zuln7pq +^l4ddhhxn$ +izj0aq6p +6gdwhfs2 +^ibbqtw3g$ +^ctio1im5$ +^os8d4bsw +^tw5gltgj +^61xyfmi0$ +^q5lvobxt$ +^ho1okagr$ +7vqkegfi +^qx4o6qbn$ +^djcftsib +^9ndsu49a$ +^x6z06y2n$ +^hp7owakq +rgjyk8j1$ +^lqsxc2w0 +nn0dm7j4 +ejjtvt5n +^lb8brssh$ +zxpb5qp6$ +^slzdbw22 +7zizfgvi$ +ww9pfuoq$ +lop57ecm +zbnt1n0p +j3e1l1fb$ +^sjs3a8zc$ +pik0lwmj +u8rlkx07$ +mxmzjpdo +^hgn4d8sm +2o6a7wvq +2acilcs2 +al9jw3i9$ +^p8qyj95s$ +q9wnxptv +gwyz74nr +jyr0xqnk +54qn1j97 +ss7whz6x +iwitgzrg$ +^h3uzhpg0$ +0hilk1l2 +qv9o09nw$ +tmk0ny5y$ +^gmb8e0eg +51nq8r79$ +xqaoxf0h$ +^p2hvgkiq +^yp2kewtb +^phnj8k4g$ +^zp0olm81 +z6eadd41$ +^8wywo6n7 +fk2duq9z +lefrguy0 +4gpxsxpm +^8b4q99tz +^te5rf59h$ +^tdbfayaw +23ux25a9 +^7wwxlnyk +ghwja82y +^79kl1i5y$ +536yps1g$ +rabehqpm$ +qqp5w38k +75d7jyqd$ +^kfiq3yx4$ +^ipq4368h +zlkwzig7 +^ega3byz9$ +2gad1s22$ +^5ux050d7$ +^8q9bw2wn$ +^4pkdx05p +axsjcd5e$ +^8nvcwni2$ +hqzoul1q$ +^bd7gcs3o$ +zdyp69hy +^x1tq5nn7$ +^pmo1pxr6 +^8d204kms$ +dl47d8iz +^5747km6s$ +4sjwpnyd$ +0uszxpfn$ +^85we7bfs +^dr7wr32x$ +ggnue4bo$ +q4cquxpo +^hswk9goo +^flc83d0i$ +^5zo6vfx8 +ys6elkg2$ +^2k4fgluo$ +ochgis15$ +^tkmp31dx +^5gcz9uef +0rf4oku8 +^9hm8t34l$ +^zinedrnq$ +fxent3s9 +^dlcpyu9g$ +b7gysa53 +wrh2ku8a$ +ugy0cp9u +w91z01cl$ +^d6u1rri6 +^h1afttez$ +^dtk1vfxt +pn8t6bf5$ +t2rlgva7 +tq70tvff$ +^2evksknz +7ab55apz +^t16hc0vd +t99t79x8$ +^sl7sz2ep +^qq396eug$ +232qnjlj$ +^n92ehe78$ +600veb5q$ +^51ihjl7v +^lxtbtm1b +^m6ruw5qv$ +5engoscl +^ajzyst8b$ +qffwpqhv +5h8s4lrg$ +6e0zpweq +^uqxiebgb$ +^0hsv6w0s +^w1k2ql7n$ +^klx3oj4n$ +nzx2eu42$ +ygov37e8$ +^yw0tkjsi +^7yiizgh6$ +9ephbbcb +^aj0v5n0n$ +^bpuzpjmh +qmnhy25m +tkpas4wy$ +^x3w5dl91 +20l74prj$ +yh4664de +^yudhmv9c +r735tdv2 +^vcyjywdf$ +^1jqtuh40$ +h5mkrjpm +qk29mnzq +^x3s28s63 +n4698q6q +^x4rw3wqt +1xze3cha +qkybh6ob +5206x9mu$ +^i9vp8h7o +^bkpifdos +^ziabea6e +^87p99alf$ +^aivqkt01$ +dtsl50j9$ +qklb9mge +^ehkfvbx2$ +nk13if1x$ +cxr74okm$ +^x53gzknf$ +7ilfatx9 +rsy4hb0m +^l8jo57qc +vipwejw0 +c82ml9bf +^35tkvwol$ +vfgpj4cr$ +^xmeu3jrx$ +^yrawb0gx$ +^sko79mel +^d9cz51op$ +9fs5a351$ +^pnqyr9q0 +^99wb9miy$ +1i7jm7jn +1os40aub +a1fwm7tb +^fysfw6mr +^mn60i8mz +b563oruf +rpwyeann$ +fhssxnmk +^0jl6cggs +fh8r5rcf +ykcmta4a +vl6kuice +24zfrgzn$ +zq7ii491$ +^1cov4cli +kt57zs11$ +^n9by4lhi +nwou9suq$ +^yf654hb1$ +^6w3cna49$ +^754wte3e +^w3ktk67x +^cge5op73 +tb82x0mq +ydbpu2t0$ +^6vf74ovi +^tkrjtyz5 +^m9co27tx$ +^ts9ehox5$ +^fw2yhh9s +^mseaj516$ +^dur38v4z$ +8xna421u +^u22kw19e +r9pcx515 +r6pwcmk6 +^3sgpg9cp +d1g6fjv5$ +^lv75jlfe$ +^u3ftcyy6$ +eyjxlbr5 +hfy82ftc$ +fd50bl8u$ +ijs3w2oz +o7ri00ta$ +hmghkdck$ +^9vsu5a35 +^z9s3dvoj$ +ok8dmkbr +mjmk0jcj +9vzmjpqw +^8pr9ektr$ +^ot7shcb2$ +^02gmq5mm +ht75dm5x +r1f8rdd0$ +fk0ehs56 +^jci1o1ff$ +1a3xz5z3 +^09u5qtrr$ +^9qdl35yz +u4c4zgig +2l06bjey$ +ltrhu66b$ +74uqof3k$ +ils9bfbw +^xh9vavng$ +^dg3nt8kn +ou3l0138 +^993yej13 +8iycojua +ff60lzkh +^e0poc83n$ +^dn514uwg +^87pe4qi4$ +^fxkvs820 +h03bulf1$ +adf83vpz$ +t415k9p2$ +^xe7yuwq3 +^c84pgsrh$ +h4c6xl38$ +^r1v6r1cj$ +s7q8sp5o +^01exz5mo$ +vmlzcwss$ +xh0im6o9$ +^d6vrck76$ +^1yi2bk9o +nsk9rpc2$ +bpdr6l9t +ebxyld21 +^voqy29qh +o1dpqjwf +^zlocwiwn$ +qgigzukb +ysf9wtx5 +^m1afq8wq +igazomtv$ +2240arm5$ +^gfaperd7 +^wue42p5w +^b9d7e0jw +qizc9gq4$ +w2xu9rv1 +^oyqlake4 +fsvep575 +^s77b7vh6$ +^qz29dd4g$ +2sukgvki +yvtvg3f4 +^beg5juod +^3je0ggr4$ +^4trlb4nv +^eq8o5xd3 +^7cacklev$ +g7v7zw79 +^za7je0dx$ +8xoddq8k$ +^w3m0nukl +^2wtlgiuz +^i85s9hhk$ +mqi06qis +mtzbx5zr$ +^qdlq25iu +^3zo8od22 +^ei2gf6y4$ +r9osn4cc$ +eusgb8g1$ +^3eu20hfv +inbehxyu$ +^y4knxbh6$ +^qhfnd8p0 +^km0n6z9c +^ty6w0fr8 +lld1bsu5$ +uiz50g4k +ia41j6h4 +^2cusuhu7$ +w8a6vl6e$ +61p68dwx$ +^mxlrl1e9$ +z53lsgih$ +e6aii9ba +^zyj9lb4t +^ilner3q5 +^n9sv9pwd +zrmra9xx +^lw21seo3 +^kghlfjet$ +j2btlher +^mgjvdiz5$ +^p5u1l4yu +ykkryrjf$ +^rxscmbs0 +h4otu6pr$ +xhmo9ydy +^1rix013k$ +ceh2bq13 +^a3u3kuys$ +zablu1wq$ +atx3swgv$ +mkfdhokk +^zu9th5uk +3hhm9oxy +q7zklndu$ +667slvg2 +3v4n0qi0$ +ve1cetm3$ +^vn8fuso0 +^7ha478js$ +^xgsx3clc$ +wemwrvov +90dp1ok0$ +d15ph373 +^a3vbfq9s$ +q6phwdqc$ +f5dy4bvi$ +npxmev2m$ +s8zb8coc +^s9ea0nt3$ +^qyt7c5pa$ +^ff9fxc3q$ +mob8x16d$ +^l2horbu3$ +^bla9axis +^x13ntsaz$ +^5fspcvae +^ptigmefp$ +w7zlh6ka +hahth2p4$ +^20fkbfjd$ +^5molnk5t +^pc23e3em$ +^4e110nzh +^avx8jw67$ +^tvbn75cl +^9utqb9gp +kvboh7ai +aspdd4g2$ +^ri7syihi +iotctxr4$ +femktmw8 +s9ab23qu$ +aw7m63fw +^vlerva17 +47qvwwsb +4g7rb8aq +jk5q94i9$ +rutkomm0 +^v2njhszm$ +rkr4mo5a +^h7sj9fd5$ +^t39hs77s$ +^h23clp7k$ +7olva24h +f29fmyuc$ +^pj8k5uaw +oaf730oo +ut6cqjzz +i5nyevwo$ +^jz6bgmbr +^c6j9g2z3$ +^e45qdwrf +^j4hob2lo +aprce45r$ +^yshx948z +^h6n9a7b2$ +^22ddofea$ +opi2tgge +ya2s2raf$ +^9qypyqz1 +sridwv0p +^bhyo8j9u +cavg4r56 +^f8943aze +^lq234mx7 +2fxrfjey$ +^b4oyt28t$ +d6ocvrdx$ +^59s6jcih +^qnna8p03 +^1djg09ak$ +97wc15s5$ +^rqn312hp +^7dja445s$ +^czt1lwmj$ +^170t27c0 +^64orvapr +3qf9dc5i +^yunbqbgi$ +jwjp7p43$ +^szythufh +^xi8t1ed1$ +e4gnu2nc +0mxzh9p3 +2it76w0a +vcntl4tj$ +ylc5ma7h +^wto3vgwy +^oxz7manx +^isdmqb1d +e5tdo6k5 +^lpy333gz +^lhv6i3kt$ +zfa6he2o$ +^q4v1x3ra$ +ks3emjo3 +4fk0hvoi +^fij6k9kj$ +7yd229j9$ +zl7064y6$ +65fgqvg2 +^l2e004ny$ +^xy6rzukq +0zt6x5ea +es3fllc7 +ds68ksuj +h5oy51ua +^u6na9u5o +^5ytqkolg$ +^ur21iqcw +^5h1dft0g +1fyrgt3u$ +^dtk3bau8$ +^8l050diu$ +^f509v20s$ +^jqitd45c$ +35yn0hma +^ahakj2mp +t8ilggcp +60q6q0ma +^e0x4u7b2$ +^4id1duwk$ +jiu9tmup +^x5warw0m +^qkoowde4$ +^ijt9on5e +^j10gtndz$ +^4wz7lyr0$ +g0z7npw3$ +^kl8bg50k +^dkxe6qsw$ +ud0kefbk +^h8yd2i9r$ +ua3g6jsw +^ymoak4iw +ioud115n$ +7uzc3vv3$ +0pltmrdm +^rnuum4h7 +jbw7eaqg +oikbamu6$ +^eh3e9j50$ +^fk5siezz$ +^wzhe19o1 +^h81exewf$ +^ye0yjq7y$ +^84at09ha +^wi2qv6ni$ +^mp1b4gj9 +^gzuh1uet$ +^i5xroszi$ +uacjuysu +^tsri67a5$ +f34v83hf +^nxj3j3h2 +^p39vwxaz$ +^rvmyyh70 +^z7vu8xxe +^0lg0zo9b$ +^6wxp7pdz +^pef858dv +zwy95xm8$ +^1qry4hus$ +^rccxls8r +8s21nf5o +fls4jhhz +op27gau7$ +^7n4vmeyn$ +1sl9m06q$ +tpwb12m0 +x1vb2wce$ +j3gskznd$ +^93ca2hs8 +^o4qj0azo$ +^q3qzrlxe +^09uuxf1i$ +e1p7605c$ +^03wa46bt$ +qxa1nrdh$ +5l6ixtet$ +ktqv8p5z$ +^phiaumgo$ +s6pd161c +^5bmn8r71$ +^x0u9g9jg +cyz75s8f +^u1axppza +^xdj158zm +zpv00fe3$ +^ne8tzh35 +^jz1kbn1x$ +t1alxa03 +su5cowb3 +^7w8z56o6$ +^00wv7o0w +^fxmor19a +^ztgchp4i$ +jltpa66l$ +fsvb0w8g$ +8exf6y1k$ +^zi98m0tm +vl6dg198$ +^zirhvhvc +^m4yu344j$ +^stld83yi$ +ogqlo5kb +86h3lrxp +cvgmqko5$ +1216s0za$ +uy14ei2x +6svzfvyp$ +v9f6vcm7 +lh05lfz3$ +jv5bu27z +^e21maxie +^o6gn8y6l$ +w56cjc3m +usgr67xc +ause99zt +vkqbynfm$ +^n2ewym43$ +rrq4lzn3$ +wtrsr4zc$ +^r96z73fj$ +emwgzgol$ +d6udwg3t$ +87ric4fu +ln400m3j +^9gd6kt88 +^ps3aib3q$ +zungkfpf$ +^u7eys8ak +^byulb2hv$ +^zcp2ds8o$ +^nc6bb1vu$ +jmmp7y90$ +^r6p9sloa +^sshzgvye$ +^2qpvysd3 +vq2fuzfp +^iz10rmy1$ +^2e312uqb +166fb75x$ +^vzjlir5o +nqd8ugi4$ +rlre0pv4$ +s06rtmdw$ +16ro3nnv +2ehdbmr5$ +^524c0jwz +980g2vos +knbi4n36$ +jh8frf3i$ +iqg1c3tp +^6hhgm57i$ +rb9dh6t0 +^a3s5w3xh +^qmb651xt$ +^33nx9x96$ +dv7dp8ud$ +^3g6h98pt +uo5pdpiu$ +^6ttrbrix$ +c2l518rx +ua4j05mt$ +8l0aor7k +^nv4lgbht +qnnn96bu +bxu8fpxo$ +vxgdeqbc$ +^0p609mld$ +r4ydgf74$ +nehplp8z +^wmugh04r +^iga9505x$ +bsfuxdr2 +2vjva1qu +wnc69vmc$ +b36r4rng +^ju86k34r +0j4exych +gpriyrc7$ +^i1hkir14$ +^530z3pd7 +^5444ac42 +^3yv6g08d$ +25dhgl12 +jsjkr6od$ +6jiyq2a0 +^fb668z7o +eynb4nb3$ +^hreafmwy$ +^a3wob05f +^8583lobx$ +dbbhpa29 +z45m8dni +^tq44nnqv$ +^c2ymr9nj$ +^szlurfyw +n2rr7v3d$ +^n8bk7r0t$ +^7975dfln +nkd1tc14$ +v3zuoda3 +^rkovvyyz +^eftjvbif$ +^0gkzli7t$ +^3z49li1l$ +^2793vf5r$ +tam6x4y1 +^gyk7zr0x +^lkjux4lg +^4fzst7qd +^l85dbje4 +tfg6okfk$ +5f2k79rs$ +5q0g06qo +^xjvyl405$ +^crgc1fqq$ +^d93t02kw +kw1unwd6$ +whynuxzj$ +^ou4ztjbc$ +we8ztvc0$ +ekipftaa$ +^ptj415zz$ +tqjn8lj0$ +^56kt9vxz +4v2dxdrd +^p1r5ocru +^xcz2xg2q +dy189dgs +s4k0ehby +^sb77fwwl +ruhzirff +^kna4wdyl$ +^fj9agajl +y9y70ijw$ +y280zja3$ +^4k03mkb3 +rm6ztrir$ +^5tlpvmnv +0a1isvoy +1cjx7pb7 +vs6ol9pm$ +^e8mu7rkr +^z2qd3iug +^fli995y8 +^3ozv28vf +^k0ea2e1c$ +e74fr9cm$ +^i1nv59rg$ +8rk08520$ +eagojrg7$ +h4s9rgcb +xk5ywr4t$ +^d6y2ngwn$ +^8h7brs9y +^1tpjqorg +8nxwppog +qz8f3stj +^8v670vj2$ +^dp1dmgfz$ +j6awfbvi +ojpf22wt +kch74kzw$ +ooi985o9 +^3bkfxusm$ +mpi4poba$ +p2hm8dju +e07vrhta$ +^bg8ttcqi$ +^j4arbr43 +tebtmihb$ +n6wujcoc +^7vkbe7md +^tgphnj01$ +evap1h8t +sa848t8s$ +c345hczo +lcptaxse$ +^xhylpft8 +^fn6555an +hgmrkb21$ +^i252prax$ +^9kivmprh +vzyrn8qc$ +^byumescl +^z38hxef0$ +aexcxhhw$ +6uzu22e0 +9wmgjk0l +^drcn5hyb +^j5taay19 +45w5ws50$ +^2uklzsf2 +i07d0d0d$ +m3bcc3vs$ +ao5d1cqw$ +ow2fjf8n$ +^y1czzs6a$ +^ibmnbgft +v4gkvmii$ +u0y7rk0o$ +t6ky6lf0 +^fsalyzwt +^0cg0i9l0 +^n6dn27gw$ +^kkskgdi7$ +^szqtfup2 +f3ubzz6h$ +^p1cjlxuf$ +^wj3wu6gk +^5kvy4r9r +iysa1znb$ +^wjtlr68r$ +^nzvqbc7h$ +7uvyywtz$ +^swvn0jvb +^bg7nkqvx +dqmql4q4 +llire5bv +af6ckt8l$ diff --git a/testdata/ui_file/objects/import_file/accounts_item导入文件.txt b/testdata/ui_file/objects/import_file/accounts_item导入文件.txt index 1547375d..dce7ee33 100644 --- a/testdata/ui_file/objects/import_file/accounts_item导入文件.txt +++ b/testdata/ui_file/objects/import_file/accounts_item导入文件.txt @@ -1,7 +1,4 @@ -*askdja -阿达阿婆 -asdadiojdioas -$hjchusiahjucih的覅us啊好覅us好的 -等哈偶丢阿是 -打死哦京东价阿九 -isoi*
\ No newline at end of file +^abcd112 +^abcd$ +abcd$ +abcd&efgh
\ No newline at end of file diff --git a/testdata/ui_file/objects/import_file/urls_item导入文件.txt b/testdata/ui_file/objects/import_file/urls_item导入文件.txt index c8c8ef2e..6d029822 100644 --- a/testdata/ui_file/objects/import_file/urls_item导入文件.txt +++ b/testdata/ui_file/objects/import_file/urls_item导入文件.txt @@ -1,9 +1,9 @@ agdfile -*c8sa1.dn -*o7y79.tg -6gpen.f1* -vp0wg.ss* +^c8sa1.dn +^o7y79.tg +^6gpen.f1$ +vp0wg.ss$ u81uk.ef -0hyfj.dz* -2kl1c.kr* -$wvncb.8f
\ No newline at end of file +^0hyfj.dz$ +2kl1c.kr$ +^wvncb.8f$
\ No newline at end of file |
