一、场景回溯:
页面中存在多个 class="xxx-xxx" 的对象,且这些对象的子对象的属性(如:text)各自不同。
二、处理方法如下:
# 主菜单定位
main_menu = (By.CSS_SELECTOR, '.ant-menu-submenu-title')
# 主菜单定位-子元素定位
main_menu_child = (By.CSS_SELECTOR, 'span')
# 主菜单定位-子元素定位
main_menu_child_child = (By.CSS_SELECTOR, 'span')
# ……/……/……
batch_deal = (By.CSS_SELECTOR, "button[class$='ant-btn ant-btn-primary']")
# ……/……/……子元素
batch_deal_child = (By.CSS_SELECTOR, 'span')
# 通过获取grandson节点的text来定位并点击主菜单
def click_by_grandchild(self, text):
elements = self.find_elements(*self.main_menu)
for element in elements:
text_value = element.find_element(*self.main_menu_child).find_element(*self.main_menu_child_child).text
if text_value == text:
element.click()
# 获取父对象列表,通过找到子对象的text属性来确定目标父对象
def click_by_child(self, button_name):
index = 0
# 获取父对象列表
elements = self.find_elements(*self.batch_deal)
for element in elements:
# 获取子对象的text属性值
text_value = element.find_element(*self.batch_deal_child).text
if text_value == button_name:
# 此处是为了避免页面刷新或者未加载完成,导致不能识别的问题
self.find_elements(*self.batch_deal)[index].click()
return index
index = index + 1