Selenium Python 由子对象来定位父对象的方法处理记录

本文介绍了在网页中面对多个相同class的对象,如何利用子对象的特性进行区别并定位父对象的场景。主要讲解了一种通过子对象属性(如:text)差异来实现父对象定位的策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、场景回溯:

页面中存在多个 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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值