summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryouzhijiang <[email protected]>2024-10-24 16:30:23 +0800
committeryouzhijiang <[email protected]>2024-10-24 16:30:23 +0800
commit87fc3ad030d64957031c35482929568c48adef2e (patch)
tree87ceb6e7af607210c6b9395d8889f8c6630f3750
parent1f726d6dc1c706ca499e44ebac9271d1f317c488 (diff)
元素定位调整
-rw-r--r--cases/object/test_fqdns.py34
-rw-r--r--common/ui_common/objects/accounts.py67
-rw-r--r--common/ui_common/objects/fqdns.py25
-rw-r--r--common/ui_common/objects/ip_address.py14
-rw-r--r--common/ui_common/objects/keywords.py19
-rw-r--r--common/ui_common/objects/moible_identities.py18
-rw-r--r--common/ui_common/objects/subscriber_ids.py10
-rw-r--r--common/ui_common/objects/urls.py26
-rw-r--r--page_element/objects_element_position.py40
-rw-r--r--testdata/ui_data/objects_data/Accounts/base_accounts.json6
-rw-r--r--testdata/ui_file/objects/import_file/accounts_item导入大量数据文件.txt2011
-rw-r--r--testdata/ui_file/objects/import_file/accounts_item导入文件.txt11
-rw-r--r--testdata/ui_file/objects/import_file/urls_item导入文件.txt14
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