Python+Selenium获取表格中某一列元素文本内容时返回为空的一种解决办法

1、获取元素文本返回值为空的代码

    def askfor_leave_list_reason_perc(self):
        sleep(1)
        self.switch_iframe(AFLL.AskforLeave_list_iframe[0], doc="请假列表iframe")
        Table_tbody = "//div[@id='table_635d6db0595d11ebbecee70b85d7da5f']//div[@class='el-table__fixed']//tbody"
        element = self.driver.find_element_by_xpath(Table_tbody)
        table_tr_list = element.find_elements_by_tag_name("tr")
        total_numbers = len(table_tr_list)
        print("列表总数据:{}".format(total_numbers))
        sleep(1)
        table_list = []
        for i in range(total_numbers):
            table_td_list = self.driver.find_elements_by_xpath('//div[@id="table_635d6db0595d11ebbecee70b85d7da5f"]//div[@class="el-table__fixed"]'
                                                               '//tbody//tr[' + str(i + 1) + ']//td[4]')[0]
            table_td_list1 = table_td_list.text
            table_list.append(table_td_list1)
        self.driver.switch_to.default_content()
        Real_Len = len(table_list)
        print("当前页实际获取到的数据条数:{}".format(Real_Len))
        return table_list

2、结果显示如下:
在这里插入图片描述
3、查找问题点:元素内容获取为空的几种可能情况(元素是否可见)

table_td_list2 = table_td_list.is_displayed()

返回值都显示为False,所以判断获取的元素不可见,则值显示为空。

4、查阅资料,找到从隐藏元素获取文本内容的方法:通过获取属性来获取

element.attribute('innerHTML')	#会返回元素的内部HTML;
element.attribute('textContent ')	#返回元素的文本内容;
element.attribute('innerText ')	#返回元素的文本内容;
textContent 是 W3C 兼容的文字内容属性
table_td_list1 = table_td_list.get_attribute('textContent')

5、获取元素内容后优化
在这里插入图片描述

new_table_list = [x.strip() for x in table_list if x.strip() != '']

6、优化完整代码:

    def askfor_leave_list_reason_perc(self):
        sleep(1)
        self.switch_iframe(AFLL.AskforLeave_list_iframe[0], doc="请假列表iframe")
        Table_tbody = "//div[@id='table_635d6db0595d11ebbecee70b85d7da5f']//div[@class='el-table__fixed']//tbody"
        element = self.driver.find_element_by_xpath(Table_tbody)
        table_tr_list = element.find_elements_by_tag_name("tr")
        total_numbers = len(table_tr_list)
        print("列表总数据:{}".format(total_numbers))
        sleep(1)
        table_list = []
        for i in range(total_numbers):
            table_td_list = self.driver.find_elements_by_xpath('//div[@id="table_635d6db0595d11ebbecee70b85d7da5f"]//div[@class="el-table__fixed"]'
                                                               '//tbody//tr[' + str(i + 1) + ']//td[4]')[0]
            table_td_list1 = table_td_list.get_attribute('textContent')
            table_td_list2 = table_td_list.is_displayed()
            print(table_td_list2)
            table_list.append(table_td_list1)
        self.driver.switch_to.default_content()
        new_table_list = [x.strip() for x in table_list if x.strip() != '']
        Real_Len = len(new_table_list)
        print("当前页实际获取到的数据条数:{}".format(Real_Len))
        return new_table_list

7、优化后效果显示
在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值