一、場景回溯:
頁面中存在多個 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