Selenium Python 由子對象來定位父對象的方法處理記錄

一、場景回溯:

頁面中存在多個 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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章