diff options
| author | youzhijiang <[email protected]> | 2024-10-25 10:30:38 +0800 |
|---|---|---|
| committer | youzhijiang <[email protected]> | 2024-10-25 10:30:38 +0800 |
| commit | 35f291ca8435e5389a603498bca86bfaf6fa31d1 (patch) | |
| tree | bc1fd06a66bf0da6496b9898f9b28c0071593166 | |
| parent | 960cad5d8762cb90cf2bbd0a1f663b92181eb1e4 (diff) | |
元素定位调整
| -rw-r--r-- | cases/object/test_ip_address.py | 4 | ||||
| -rw-r--r-- | cases/object/test_tunnels.py | 6 | ||||
| -rw-r--r-- | common/ui_common/objects/ip_address.py | 5 | ||||
| -rw-r--r-- | common/ui_common/objects/objects_public_operations.py | 16 | ||||
| -rw-r--r-- | common/ui_common/objects/tunnels.py | 44 | ||||
| -rw-r--r-- | page_element/ln_objects_element_position.py | 12 | ||||
| -rw-r--r-- | page_element/objects_element_position.py | 4 |
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 |
