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
发布了30 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u014722022/article/details/102918540