summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryouzhijiang <[email protected]>2024-10-25 10:30:38 +0800
committeryouzhijiang <[email protected]>2024-10-25 10:30:38 +0800
commit35f291ca8435e5389a603498bca86bfaf6fa31d1 (patch)
treebc1fd06a66bf0da6496b9898f9b28c0071593166
parent960cad5d8762cb90cf2bbd0a1f663b92181eb1e4 (diff)
元素定位调整
-rw-r--r--cases/object/test_ip_address.py4
-rw-r--r--cases/object/test_tunnels.py6
-rw-r--r--common/ui_common/objects/ip_address.py5
-rw-r--r--common/ui_common/objects/objects_public_operations.py16
-rw-r--r--common/ui_common/objects/tunnels.py44
-rw-r--r--page_element/ln_objects_element_position.py12
-rw-r--r--page_element/objects_element_position.py4
7 files changed, 43 insertions, 48 deletions
diff --git a/cases/object/test_ip_address.py b/cases/object/test_ip_address.py
index f24416a4..d3c06a87 100644
--- a/cases/object/test_ip_address.py
+++ b/cases/object/test_ip_address.py
@@ -245,7 +245,7 @@ class Test_ip_address:
},
"Createtype": "IP",
"Subtype": "",
- "Search_type": "ID&Name&IP"
+ "Search_type": "Name&IP"
},{
"ids": "用例32、ID&subType&Description组合查询",
"Name": "test-1",
@@ -260,7 +260,7 @@ class Test_ip_address:
},
"Createtype": "IP_Learning",
"Subtype": "",
- "Search_type": "ID&subType&Description"
+ "Search_type": "subType&Description"
},{
"ids": "用例33、Name&IP的部分值搜索",
"Name": "random",
diff --git a/cases/object/test_tunnels.py b/cases/object/test_tunnels.py
index e39b3b66..d29676c0 100644
--- a/cases/object/test_tunnels.py
+++ b/cases/object/test_tunnels.py
@@ -146,12 +146,6 @@ class TestTunnels:
[
# Tunnel中新建ip和ip group,之后删除
{
- "ids": "Tunnel中ID模糊查询",
- "Search_type": "fuzzy->ID",
- "type": "All",
- "isDeleteGroup": "True"
- },
- {
"ids": "Tunnel中Name模糊查询",
"Search_type": "fuzzy->Name",
"type": "All",
diff --git a/common/ui_common/objects/ip_address.py b/common/ui_common/objects/ip_address.py
index 85175f2a..fc3eb48a 100644
--- a/common/ui_common/objects/ip_address.py
+++ b/common/ui_common/objects/ip_address.py
@@ -512,7 +512,7 @@ class IPAddress:
self.loading_parameter(data)
# 创建mobile_identities
# 点击create
- time.sleep(1)
+ time.sleep(3)
self.driver.find_element(By.XPATH, listPage_object_ip_address_createButton_posXpath).click()
if data["Create"]["model"] == "0":
# 输入ip_address,input_name
@@ -1540,11 +1540,10 @@ class IPAddress:
self._create(data)
self._search(data)
time.sleep(2)
- total = self.driver.find_element(By.XPATH, "//div[@class='page-box-containcheck']//span[contains(text(),'Total')]").text
+ total = self.driver.find_element(By.XPATH, "//div[@class='flex items-center justify-between']//div[1]/span[1]").text
count = total.split("Total:")
if int(count[1]) != 1:
raise AssertionError("搜索结果错误,请查看")
- assert self.objects_po.table_dict["ID"] == self.driver.find_element(By.XPATH,listPage_First_object_ID_posXpath).text
assert self.create_name == self.driver.find_element(By.XPATH, listPage_First_object_Name_posXpath).text
assert self.random_name == self.driver.find_element(By.XPATH, listPage_First_object_Description_posXpath).text
time.sleep(2)
diff --git a/common/ui_common/objects/objects_public_operations.py b/common/ui_common/objects/objects_public_operations.py
index 0061af52..c9e82a16 100644
--- a/common/ui_common/objects/objects_public_operations.py
+++ b/common/ui_common/objects/objects_public_operations.py
@@ -248,9 +248,11 @@ class ObjectsPublicOperations:
mainPage_ObjectSearch_Column_settings_posXpath) # 列设置按钮
self.driver.execute_script("arguments[0].scrollIntoView();", column_setting_btn)
column_setting_btn.click() # 点击列设置
- self.driver.find_element(By.XPATH, '//span[text()="Vsys ID"]').click()
- self.driver.find_element(By.XPATH, '//span[text()="UUID"]').click()
- self.driver.find_element(By.XPATH, '//div[text()="UUID"]').click()
+ # self.driver.find_element(By.XPATH, '//span[text()="Vsys ID"]').click()
+ # self.driver.find_element(By.XPATH, '//span[text()="UUID"]').click()
+ self.driver.find_element(By.XPATH, "//input[@name='Show/Hide All']").click()
+ self.driver.find_element(By.XPATH, "//input[@name='Show/Hide All']").click()
+ self.driver.find_element(By.XPATH, '//div[text()="Name"]').click()
# all_checked_xpath = '//*[@class="all-btn"]//*[@class="el-checkbox__input is-checked"]'
# if self.driver.element_isExist(By.XPATH, all_checked_xpath): # 如果全选被选中
# self.driver.find_element(By.XPATH,
@@ -287,11 +289,13 @@ class ObjectsPublicOperations:
# self.key_id = self.driver.find_element(By.XPATH, list_headers_id_posXpath).text
# self.value_id = self.driver.find_element(By.XPATH, list_firstRow_values_id_posXpath).text
+ if need_exclude == 1:
+ self.uuid_name = self.driver.find_element(By.XPATH, '//div[text()="UUID"]').text
+ self.uuid_value = self.driver.find_element(By.XPATH,'//div[@aria-rowindex="2"]//div[@data-field="uuid"]').text
+
self.key_vsys_id = self.driver.find_element(By.XPATH, '//div[text()="Vsys ID"]').text
self.value_vsys_id = self.driver.find_element(By.XPATH, '//div[@aria-rowindex="2"]//div[@data-field="vsys"]').text
- self.uuid_name = self.driver.find_element(By.XPATH, '//div[text()="UUID"]').text
- self.uuid_value = self.driver.find_element(By.XPATH, '//div[@aria-rowindex="2"]//div[@data-field="uuid"]').text
self.key_name = self.driver.find_element(By.XPATH, '//div[@class="MuiDataGrid-columnHeaderTitle css-mh3zap" and text()="Name"]').text
self.value_name = self.driver.find_element(By.XPATH, '//div[@aria-rowindex="2"]//span[@class="truncate"]').text
@@ -311,7 +315,7 @@ class ObjectsPublicOperations:
self.key_des: self.value_des,"Details": "null"}
else:
- self.table_dict = {self.key_vsys_id: self.value_vsys_id,self.uuid_name: self.uuid_value,self.key_name: self.value_name, self.key_des: self.value_des,
+ self.table_dict = {self.key_vsys_id: self.value_vsys_id,self.key_name: self.value_name, self.key_des: self.value_des,
"Details": "null"}
# print("extract_ele TEST:{}".format(self.table_dict))
return self.table_dict
diff --git a/common/ui_common/objects/tunnels.py b/common/ui_common/objects/tunnels.py
index f589b73c..ad084fd4 100644
--- a/common/ui_common/objects/tunnels.py
+++ b/common/ui_common/objects/tunnels.py
@@ -81,7 +81,7 @@ class Tunnels:
# 点击页面其他区域
self.driver.find_element(By.XPATH, Tunnel_ObjectPage_inputItem_posXpath).click() #
- name_error_message = self.driver.find_element(By.XPATH, "//div[@class='tunnel-object-name']//div[@class='MuiFormHelperText-root css-koslx8']").text # 输入不足四个字符时的提示信息
+ name_error_message = self.driver.find_element(By.XPATH, "//div[@class='tunnel-object-name']//div[2]").text # 输入不足四个字符时的提示信息
name_actual_message = 'The length of the name is at most 128 characters and cannot be less than 4 characters'
assert name_actual_message == name_error_message.strip() # 校验输入name不足四个字符时的提示信息
# endpoint_error_message = self.driver.find_element(By.XPATH, '//form/div[4]/div[1]/div/div[2]').text #
@@ -395,8 +395,7 @@ class Tunnels:
if not fuzzy_search:
if search_type == "ID":
self.driver.find_element(By.XPATH, listpage_search_box_posXpath).click()
- self.driver.find_element(By.XPATH, listpage_search_box_posXpath).send_keys(
- self.table_dict['ID'])
+ self.driver.find_element(By.XPATH, listpage_search_box_posXpath).send_keys(self.table_dict['ID'])
self.driver.find_element(By.XPATH, listPage_objectSearch_Tunnels_select_Id_posId).click()
elif search_type == "Name":
self.driver.find_element(By.XPATH, listpage_search_box_posXpath).click()
@@ -555,7 +554,7 @@ class Tunnels:
self.driver.find_element(By.XPATH, tunnel_slide_ip_item_save).click()
self.driver.find_element(By.XPATH, tunnel_slide_ip_name).send_keys("test_ui_4_tunnle")
self.driver.find_element(By.XPATH, tunnel_slide_ip_ok).click()
- self.driver.find_element(By.XPATH, tunnel_slide_ip_confirm_ok).click()
+ # self.driver.find_element(By.XPATH, tunnel_slide_ip_confirm_ok).click()
self.driver.find_element(By.XPATH, tunnel_ip_list_close).click()
##endpoint B中新建ip object group
@@ -566,8 +565,9 @@ class Tunnels:
self.driver.find_element(By.XPATH, tunnel_slide_ip_name).send_keys("test_ui_4_tunnle")
self.driver.find_element(By.XPATH, tunnel_ip_group_add_subobject).click()
self.driver.find_element(By.XPATH, tunnel_ip_group_first_row).click()
+ self.driver.find_element(By.XPATH, tunnel_ip_list_close2).click()
self.driver.find_element(By.XPATH, tunnel_slide_ip_ok).click()
- self.driver.find_element(By.XPATH, tunnel_slide_ip_confirm_ok).click()
+ # self.driver.find_element(By.XPATH, tunnel_slide_ip_confirm_ok).click()
self.driver.find_element(By.XPATH, tunnel_ip_list_close).click()
# 确认保存
@@ -576,15 +576,14 @@ class Tunnels:
# self.extract_ele_tunnel() ## 提取ID、Name、Description、Detail
self.table_dict = self.objects_po.extract_ele(need_exclude=2)
- first_detail_elem = self.driver.find_element(By.XPATH,
- '(//div[@class="itemDetails cursor"]//div[@class="three-row list-popover-click"])[1]')
- time.sleep(1)
- ActionChains(self.driver).move_to_element(first_detail_elem).perform()
- time.sleep(1)
- first_detail_ip_elem = self.driver.find_element(By.XPATH,
- '((//div[contains(@x-placement,"right-start")]//td)[last()]//div)[last()]')
- first_detail_ip_text = first_detail_ip_elem.text.strip().split(" ")[0].strip()
- self.table_dict["Details"] = first_detail_ip_text
+ # first_detail_elem = self.driver.find_element(By.XPATH,'(//div[@class="itemDetails cursor"]//div[@class="three-row list-popover-click"])[1]')
+ # time.sleep(1)
+ # ActionChains(self.driver).move_to_element(first_detail_elem).perform()
+ # time.sleep(1)
+ # first_detail_ip_elem = self.driver.find_element(By.XPATH,
+ # '((//div[contains(@x-placement,"right-start")]//td)[last()]//div)[last()]')
+ # first_detail_ip_text = first_detail_ip_elem.text.strip().split(" ")[0].strip()
+ # self.table_dict["Details"] = first_detail_ip_text
def delete_created_ip_bymself(self, data):
# self.driver.find_element(By.XPATH,mainPage_firstLevelMenu_Objects_posXpath).click()
@@ -663,7 +662,7 @@ class Tunnels:
self.driver.find_element(By.XPATH, tunnel_slide_ip_item_save).click()
self.driver.find_element(By.XPATH, tunnel_slide_ip_name).send_keys("test_ui_4_tunnle")
self.driver.find_element(By.XPATH, tunnel_slide_ip_ok).click()
- self.driver.find_element(By.XPATH, tunnel_slide_ip_confirm_ok).click()
+ # self.driver.find_element(By.XPATH, tunnel_slide_ip_confirm_ok).click()
self.driver.find_element(By.XPATH, tunnel_ip_list_close).click()
# 校验item_search的功能
@@ -676,16 +675,15 @@ class Tunnels:
self.driver.find_element(By.XPATH, tunnel_item_search_frame).send_keys("1.1" + Keys.ENTER)
try:
- find_content2 = self.driver.find_element(By.XPATH, tunnel_first_row_item).text
+ # find_content2 = self.driver.find_element(By.XPATH, tunnel_first_row_item).text
+ self.driver.isElementExist(tunnel_first_row_item)
except NoSuchElementException:
find_content2 = "null"
- print("what0" + find_content2)
- assert find_content2 == '', f"Expected '', but got '{find_content2}'"
-
- self.driver.find_element(By.XPATH,
- '//*[@id="Cancel-_tunnelAdd_Home_App_anonymousComponent"]/span').click() # Cancel
- self.driver.find_element(By.XPATH,
- '//*[@class="el-button el-button--default el-button--small el-button--primary operation-confirm-Leave"]').click()
+ # print("what0" + find_content2)
+ # assert find_content2 == '', f"Expected '', but got '{find_content2}'"
+ assert self.driver.Exist == False
+ self.driver.find_element(By.XPATH,TunnelsObjectPage_button_cancel_posXpath).click() # Cancel
+ # self.driver.find_element(By.XPATH,'//*[@class="el-button el-button--default el-button--small el-button--primary operation-confirm-Leave"]').click()
def _modify(self, data: {}):
# self.driver.find_element(By.XPATH,mainPage_secondLevelMenu_Tunnel_posXpath).click()
diff --git a/page_element/ln_objects_element_position.py b/page_element/ln_objects_element_position.py
index 69fd1b88..48e3d277 100644
--- a/page_element/ln_objects_element_position.py
+++ b/page_element/ln_objects_element_position.py
@@ -130,7 +130,7 @@ tunnel_add_item_2="//div[@class='tunnel-object-endpointB']//i[@class='iconfont i
tunnel_ip_list_fourth="//div[@class='pt-[2px] overflow-hidden flex-1']//ul/li[9]//div[@class='flex h-[22px] leading-[22px] MuiBox-root css-14di81r']"
tunnel_page_description="//div[@class='tunnel-object-description']//textarea[1]"
tunnel_ip_list_close="//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-zcc2bs']"
-
+tunnel_ip_list_close2 = "(//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-zcc2bs'])[2]"
tunnel_ip_list_add_button='//i[@class="iconfont icon-Create1"]'
tunnel_ip_list_select_ip='//li[normalize-space(text())="Address"]'
tunnel_ip_list_select_ip_group='//li[normalize-space(text())="Address Group"]'
@@ -141,9 +141,9 @@ tunnel_slide_ip_item_input="//div[@class='MuiBox-root css-1krxo6z']//input[@clas
tunnel_slide_ip_item_save="//div[@class='MuiBox-root css-1krxo6z']//i[@class='operate-icon iconfont icon-save']"
tunnel_slide_ip_ok="//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']"
tunnel_slide_ip_confirm_ok='//*[@class="el-button el-button--default el-button--small el-button--primary operation-confirm"]'
-tunnel_item_search_frame = "//div[@class='tunnel-object-endpointA']//input[@class='MuiInput-input css-za5rna']"
-tunnel_first_row_item="//div[@class='flex flex-col items-center px-[4px]']//ul//li[1]//span"
-tunnel_ip_group_first_row="//div[@class='MuiBox-root css-1krxo6z']//div[@class='ip-object-included_sub_object_uuids']//ul/li[1]//span"
+tunnel_item_search_frame = "//div[@class='tunnel-object-endpointA']//input[@placeholder='Search For']"
+tunnel_first_row_item="//div[@class='flex flex-col items-center px-[4px] select-picker']//ul/li[1]//span"
+tunnel_ip_group_first_row="(//div[@class='pt-[2px] overflow-hidden flex-1'])[2]//ul//li[1]"
tunnel_edit_endpointa_posXpath = '//*[@id="tunnelOperateItem-_EndpointAList_ElFormItem_ElForm_VPanel_VEditPanel_tunnelAdd_Home_App_anonymousComponent"]/i'
tunnel_edit_endpointa_item_posXpath ='//*[@id="router-view-container"]//div[@class="IconBtn"]/i[@class="operate-icon iconfont icon-Edit"]'
tunnel_item_input_posXpath = '//*[@id="router-view-container"]//input[@popperclass="ip-expr-popper"]'
@@ -151,11 +151,11 @@ tunnel_item_save_posXath = '//*[@id="router-view-container"]//i[@class="operate-
TunnelsObjectPage_button_SaveYes_posId = "OK-_tunnelAdd_Home_App_anonymousComponent"# OK按钮
TunnelsObjectPage_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']"
-TunnelsObjectPage_button_cancel_posId = "userBack-_tunnelAdd_Home_App_anonymousComponent" #Cancel按钮#todo 改为id
+TunnelsObjectPage_button_cancel_posXpath = "//div[@class=' tunnel-object-page MuiBox-root css-o7xelj']//button[text()='Cancel']"
TunnelsObjectPage_button_warningSaveYes_posSelector = 'body > div.el-message-box__wrapper > div > div.el-message-box__btns > button.el-button.el-button--default.el-button--small.el-button--primary.operation-confirm > span' #提示保存Yes按钮警告框
#Tunnel查询页面,Object类似
-listPage_objectSearch_Tunnels_select_all_xpath='//*[@id="1-_FilteredSearch_ElRow_Objects_tunnel_Home_App_anonymousComponent" ]/preceding-sibling::li[1]'
+listPage_objectSearch_Tunnels_select_all_xpath= "//ul[@class='base-Popper-root MuiAutocomplete-listbox css-18r31z0']//li[1]"
listPage_objectSearch_Tunnels_select_Id_posId = "1-_FilteredSearch_ElRow_Objects_tunnel_Home_App_anonymousComponent" #查询ID
listPage_objectSearch_Tunnels_select_Name_posId ="//ul[@class='base-Popper-root MuiAutocomplete-listbox css-18r31z0']//span[text()='Name']" #查询Name
listPage_objectSearch_Tunnels_select_IP_posId = "//ul[@class='base-Popper-root MuiAutocomplete-listbox css-18r31z0']//span[text()='ip']" #查询IP
diff --git a/page_element/objects_element_position.py b/page_element/objects_element_position.py
index fd26f8f0..84baafe1 100644
--- a/page_element/objects_element_position.py
+++ b/page_element/objects_element_position.py
@@ -648,8 +648,8 @@ listPage_object_ip_address_del_after_ele_posXpath = '//div[@id="ly-table1-listco
listPage_object_ip_address_select_First_object_posXpath = "//div[@class='MuiDataGrid-virtualScrollerRenderZone css-1inm7gi']/div[1]//span[@class='MuiCheckbox-action css-kit57i']" # 选择列表中第一个对象
listPage_object_ip_address_select_Second_object_posXpath = "//div[@class='MuiDataGrid-virtualScrollerRenderZone css-1inm7gi']/div[2]//span[@class='MuiCheckbox-action css-kit57i']" # 选择列表中第二个对象
listPage_First_object_ID_posXpath = "(//*[@id='ly-table1-listcontent']//div[@class='table-status-item-id'])[1]"
-listPage_First_object_Name_posXpath = "//div[@class='MuiDataGrid-virtualScrollerRenderZone css-1inm7gi']/div[2]//div[@data-field='name']//span[@class='truncate']"
-listPage_First_object_Description_posXpath = "//div[@class='MuiDataGrid-virtualScrollerRenderZone css-1inm7gi']/div[2]//div[@data-field='description']"
+listPage_First_object_Name_posXpath = "(//div[@data-field='name'])[2]//span"
+listPage_First_object_Description_posXpath = "(//div[@data-field='description'])[2]"
listPage_Second_object_ID_posXpath = "(//*[@id='ly-table1-listcontent']//div[@class='table-status-item-id'])[2]"
# Create IP Address Object 和 Edit IP Address Object 新增和编辑页
ip_addressObjectPage_input_Name_posXpath = "//div[@class='ip-object-name']//input" # name输入框Xpath