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

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

selenium+python对表格数据的操作的更多相关文章

  1. ExtJS4.2学习(21)动态菜单与表格数据展示操作总结篇2

    运行效果: 此文介绍了根据操作左侧菜单在右面板展示相应内容. 一.主页 先看一下跳转主页的方式:由在webapp根目录下的index.jsp跳转至demo的index.jsp 下面是demo的inde ...

  2. 干货--Excel的表格数据的一般处理和常用python模块。

    写在前面: 本文章的主要目的在于: 介绍了python常用的Excel处理模块:xlwt,xlrd,xllutils,openpyxl,pywin32的使用和应用场景. 本文只针对于Excel表中常用 ...

  3. Python读取网页表格数据

    学会了从网格爬取数据,就可以告别从网站一页一页复制表格数据的时代了. 说个亲身经历的事: 以前我的本科毕业论文是关于"燃放烟花爆竹和空气质量"之间关系的,就要从环保局官网查资料. ...

  4. Python常用的数据文件存储的4种格式(txt/json/csv/excel)及操作Excel相关的第三方库(xlrd/xlwt/pandas/openpyxl)(2021最新版)

    序言:保存数据的方式各种各样,最简单的方式是直接保存为文本文件,如TXT.JSON.CSV等,除此之外Excel也是现在比较流行的存储格式,通过这篇文章你也将掌握通过一些第三方库(xlrd/xlwt/ ...

  5. Python使用Tabula提取PDF表格数据

    今天遇到一个批量读取pdf文件中表格数据的需求,样式大体是以下这样: python读取PDF无非就是三种方式(我所了解的),pdfminer.pdf2htmlEX 和 Tabula.综合考虑后,选择了 ...

  6. [Python] Python 学习 - 可视化数据操作(一)

    Python 学习 - 可视化数据操作(一) GitHub:https://github.com/liqingwen2015/my_data_view 目录 折线图 散点图 随机漫步 骰子点数概率 文 ...

  7. [python爬虫] Selenium常见元素定位方法和操作的学习介绍

    这篇文章主要Selenium+Python自动测试或爬虫中的常见定位方法.鼠标操作.键盘操作介绍,希望该篇基础性文章对你有所帮助,如果有错误或不足之处,请海涵~同时CSDN总是屏蔽这篇文章,再加上最近 ...

  8. selenium python 一些操作和定位收集

    (—)滚动条操作 python中selenium操作下拉滚动条方法汇总 selenium_webdriver(python)控制浏览器滚动条 selenium+Python(select定位) Sel ...

  9. [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)

    转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...

随机推荐

  1. 2020-06-13:Redis底层数据结构?

    福哥答案2020-06-13: 福哥口诀法:简链字跳整 压快压 SDS simple synamic string:简单动态字符串.支持自动动态扩容的字节数组 .list :链表 .双端链表.dict ...

  2. C#LeetCode刷题之#700-二叉搜索树中的搜索(Search in a Binary Search Tree)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/4102 访问. 给定二叉搜索树(BST)的根节点和一个值. 你需要 ...

  3. 【NOI2015】荷马史诗 - 哈夫曼树

    题目描述 追逐影子的人,自己就是影子 ——荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>.但是由<奥德赛&g ...

  4. 编写有提示的listbox控件 2008-06-29 17:13

    在MFC中几乎所有的控件都有信息提示,而惟有listbox却没有这样的一个功能,每当我们把鼠标移到listbox上控件时,啥玩意儿都没有是不是很气馁啊,所以我今天特地写了一个简单的有提示的listbo ...

  5. Salesforce学习笔记之吐槽

    迄今感到的几个不方便 1. SOQL里没有SELECT * ,只好根据参考手册和用vs code的一个插件Schema Explorer来辅助生成SELECT语句. 2. SOQL不支持注释,Deve ...

  6. JavaScript设计模式之策略模式【组合委托】

    前言:语言只是工具,思想才是核心 今天要总结的是 策略模式 策略在开发中的应用非常广泛,所以也是非常常见且使用的设计模式. 在实际开发中,往往在实现一个功能时,有多种解决方案可行. 常见场景: 解压: ...

  7. Android Failed to find layer (XXX/XXX.xxActivity#0) in layer parent (no-parent).

    报错: Failed to find layer (XXX/XXX.xxActivity#0) in layer parent (no-parent). 解决: 将该xxActivity复制一份到桌面 ...

  8. Tmux安装和使用

    1.What's tmux tmux 是一个终端复用器: 可以激活多个终端或窗口, 在每个终端都可以单独访问,每一个终端都可以访问,运行和控制各自的程序.tmux类似于screen,可以关闭窗口将程序 ...

  9. 【趣味设计模式系列】之【代理模式3--Cglib动态代理源码解析】

    1. 图解 上图主要描述了Cglib动态代理的主要执行过程,下面做详细分析,以下源码使用的Cglib版本为3.2.12. 2. Enhancer源码分析 public Object create() ...

  10. JacaScript实现call apply bind函数

    一.call函数 模拟实现第一步:整体思路 Function.prototype.call2=function(context){ context.fn=this; //1.将函数(谁调用 即this ...