• selenium+python对表格数据的操作


    一、直接获取整个表格数据,包含表头

    def table_info(self):
            tr_data=[]
            table_data=[]
            css='id=>useradmin'#根据表格id找到表格
            self.pyse.element_wait(css)
            trs=self.pyse.get_element(css).find_elements_by_tag_name('tr')#找到表以后,找到表内的所有行tr
            print(trs)
            for tr in trs:#循环每一行
                print(tr.text)#每一行的所有字段:序号 角色编号 角色名称 角色级别 状态 操作
                tr_data=tr.text.split(' ')#将每行按照空格分割成列表,装入tr_data。此时tr_data中存放的就是每一行的字段
                table_data.append(tr_data)#将每行的列表装入另一个数组中,这样相当于一个二维列表
            print(table_data)
            '''
            table_data=[['序号', '角色编号', '角色名称', '角色级别', '状态', '操作'], ['24', 'R001', '管理员', '0', '禁用', '启用', '修改']]
            tr_data=序号 角色编号 角色名称 角色级别 状态 操作
            tr_data= 25 R002 校长 1 启用 禁用 修改
            .......
            '''

    2、如果不要表头,可直接用定位tbody元素,同样的方法获取到表格数据,不包含表头

    3、输入关键字,搜索表格数据,验证搜索功能

    此时直接用第一种方法,会提示错误。因为点击查询的时候,tbody数据重新加载,不依附于原页面

    selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document

    没有和当前页面进行绑定,主要是页面刷新或者跳转引起的,需要重新获取一次元素。

    此时需要重新定位tbody元素,再次查询

        def aftersearch_tableinfo(self):#点击查询后,表格中tbody元素不在依附于当前页面,需要重新定位
            css = 'css=>[role=alert]'  # 重新定位tbody元素
            self.pyse.element_wait(css)
            trs=self.pyse.get_element(css).find_elements_by_tag_name('tr')
            print(trs)
            tbody_data=[]
            for tr in trs:
                tr_data=tr.text.split(' ')
                tbody_data.append(tr_data)
            print(tbody_data)
            return tbody_data
    
    
        def check_role_number_in(self):
            data=self.aftersearch_tableinfo()#点击查询后,获取到表格数据,这里不包含表头
            print(len(data))
            if len(data)==0:
                print('查询关键字失败,校验失败,没有查到数据')
            else:
                for tr in range(len(data)):#遍历每一行,查看第2列是否都等于搜索关键字,tr表示每一行的行号,从0开始。因为我查询的关键词是按照第二列字段进行查的,所以此处和第二列比对
                    if data[tr][1]!=Setting_Role_data.role_number:
                        return False
                    else:
                        return True
  • 相关阅读:
    Linux下redis的安装
    python 文档
    Asp.net 高性能 Sqlite ORM 框架之 sqliteSugar
    程序整理网
    第十章:更多
    第九章:高级应用举例
    第八章:简单应用举例(2)
    第八章:简单应用举例(1)
    第七章:Mapping插件
    第六章:加载或保存JSON数据
  • 原文地址:https://www.cnblogs.com/bendouyao/p/9641139.html
Copyright © 2020-2023  润新知