3 机器人自动化之页面表格数据的定位拾取

步骤一  找到要定位的表格的位置  一般第一行的前2个  第一列的前两个 定位准确后 文本测试获取参数(此步骤仅供测试使用,代码可以不写主要是后边的获取所有数据函数)利用获取文本组件  并定位到组件代码进行复制

#A 第一行第一个数据和第二个数据
def get_data_line():
iie.get_text(url=r‘http://www.scfund.com.cn/flagfund_2011/index.shtml‘,selector=r‘DIV:nth-of-type(1) > DIV:nth-of-type(2) > DIV:nth-of-type(2) >

DIV:nth-of-type(2) > DIV:nth-of-type(9) > TABLE:nth-of-type(1) > THEAD:nth-of-type(1) > TR:nth-of-type(1) > TH:nth-of-type(1)‘,waitfor=10)
iie.get_text(url=r‘http://www.scfund.com.cn/flagfund_2011/index.shtml‘,selector=r‘DIV:nth-of-type(1) > DIV:nth-of-type(2) > DIV:nth-of-type(2) >

DIV:nth-of-type(2) > DIV:nth-of-type(9) > TABLE:nth-of-type(1) > THEAD:nth-of-type(1) > TR:nth-of-type(1) > TH:nth-of-type(2)‘,waitfor=10)
print("行数据获取成功")

#A 第一列第一个数据和第二个数据
def get_data_col():

iie.get_text(url=r‘http://www.scfund.com.cn/flagfund_2011/index.shtml‘,selector=r‘DIV:nth-of-type(1) > DIV:nth-of-type(2) > DIV:nth-of-type(2) >

DIV:nth-of-type(2) > DIV:nth-of-type(9) > TABLE:nth-of-type(1) > THEAD:nth-of-type(1) > TR:nth-of-type(1) > TH:nth-of-type(1)‘,waitfor=10)
iie.get_text(url=r‘http://www.scfund.com.cn/flagfund_2011/index.shtml‘,selector=r‘DIV:nth-of-type(1) > DIV:nth-of-type(2) > DIV:nth-of-type(2) >

DIV:nth-of-type(2) > DIV:nth-of-type(9) > TABLE:nth-of-type(1) > TBODY:nth-of-type(1) > TR:nth-of-type(1) > TD:nth-of-type(1)‘,waitfor=10)
print("列数据获取成功")

步骤二 获取所有的数据(注意参数和获取的数据值后边的代码TABLE:nth-of-type(1) > TBODY:nth-of-type(1) > TR:nth-of-type({0}) > TD:nth-of-type({1})‘.format(x, y),waitfor=10)固定的

def get_data_all():
for x in range(1, 5):  #第一行到第四行
  for y in range(1, 11): #第一列到第十列
    data = iie.get_text(url=r‘http://www.scfund.com.cn/flagfund_2011/index.shtml‘,selector=r‘DIV:nth-of-type(1) > DIV:nth-of-type(2) > DIV:nth-of-type(2) >

    DIV:nth-of-type(2) > DIV:nth-of-type(9) > TABLE:nth-of-type(1) > TBODY:nth-of-type(1) > TR:nth-of-type({0}) > TD:nth-of-type({1})‘.format(x, y),waitfor=10)

步骤三 如果获取的数据比较完整 就可以做进一步处理 如果不完整的话 再次定位数据

总结 获取数据都是TD 一般第一行的前两个是 tr  th  ,第二行是真正意义的td

要循环的数据 代码是TD 中除了 具体的第二行 第一列去掉 其他代码+固定代码

=================官方论坛==============

通过位置规律拾取数据

以官网 UEBA Demo 中“用户管理”界面为例, 获取界面中的数据。

获取代码方式:
1. 设置功能模块

2. 获取的文本位置后,点击运行此组件

3. 点击定位代码

4. 得到代码

在设计器中,选中获取 "获取文本" 方法,编译并得到获取文本代码,
获取行数据示例:
代码区别对比:

# 横行数据, 分别为第一行第一个和第三个数据
def get_data_line():
    iie.get_text(title=r‘用户管理‘,selector=r‘#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(2)‘,waitfor=10)
    iie.get_text(title=r‘用户管理‘,selector=r‘#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(4)‘,waitfor=10)

get_all_line() 运行结果

运行开始
Main.py- "StepNodeTag:15222350468",Note:
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(2)]
iie.py-IE获取文本:zhouli123
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(4)]
iie.py-IE获取文本:demouser
运行结束

获取前两列首个数据

# 纵行数据,第一行第一个数据和第二行第一个数据
def get_data_col():
    iie.get_text(title=r‘用户管理‘,selector=r‘#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(2)‘,waitfor=10)
    iie.get_text(title=r‘用户管理‘,selector=r‘#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(3) > TD:nth-of-type(2)‘,waitfor=10)

get_data_col() 得到的结果

运行开始
Main.py- "StepNodeTag:15222350468",Note:
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(2)]
iie.py-IE获取文本:zhouli123
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(3) > TD:nth-of-type(2)]
iie.py-IE获取文本:cmbtest
C:\iS-RPA\studio-v6>
运行结束

获取所有数据:

# 得到整个表格数据
def get_data_all():
    for x in range(2, 17):
        for y in range(2, 7):
            iie.get_text(title=r‘用户管理‘,selector=r‘#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type({0}) > TD:nth-of-type({1})‘.format(x, y),waitfor=10)

get_data_all() 运行得到的部分结果:

运行开始
Main.py- "StepNodeTag:15222350468",Note:
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(2)]
iie.py-IE获取文本:zhouli123
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(3)]
iie.py-IE获取文本:
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(4)]
iie.py-IE获取文本:demouser
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(5)]
iie.py-IE获取文本:2018-07-25 15:08:09
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(6)]
iie.py-IE获取文本:2018-07-27 09:06:39
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(3) > TD:nth-of-type(2)]
iie.py-IE获取文本:cmbtest
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(3) > TD:nth-of-type(3)]
iie.py-IE获取文本:
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(3) > TD:nth-of-type(4)]
iie.py-IE获取文本:系统默认
......

通过这种方式在无法获取整个表格数据文本或者得到部分数据的情况时使用,效果明显。

通过位置规律拾取数据

以官网 UEBA Demo 中“用户管理”界面为例, 获取界面中的数据。

获取代码方式:
1. 设置功能模块

2. 获取的文本位置后,点击运行此组件

3. 点击定位代码

4. 得到代码

在设计器中,选中获取 "获取文本" 方法,编译并得到获取文本代码,
获取行数据示例:
代码区别对比:

# 横行数据, 分别为第一行第一个和第三个数据
def get_data_line():
    iie.get_text(title=r‘用户管理‘,selector=r‘#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(2)‘,waitfor=10)
    iie.get_text(title=r‘用户管理‘,selector=r‘#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(4)‘,waitfor=10)

get_all_line() 运行结果

运行开始
Main.py- "StepNodeTag:15222350468",Note:
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(2)]
iie.py-IE获取文本:zhouli123
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(4)]
iie.py-IE获取文本:demouser
运行结束

获取前两列首个数据

# 纵行数据,第一行第一个数据和第二行第一个数据
def get_data_col():
    iie.get_text(title=r‘用户管理‘,selector=r‘#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(2)‘,waitfor=10)
    iie.get_text(title=r‘用户管理‘,selector=r‘#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(3) > TD:nth-of-type(2)‘,waitfor=10)

get_data_col() 得到的结果

运行开始
Main.py- "StepNodeTag:15222350468",Note:
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(2)]
iie.py-IE获取文本:zhouli123
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(3) > TD:nth-of-type(2)]
iie.py-IE获取文本:cmbtest
C:\iS-RPA\studio-v6>
运行结束

获取所有数据:

# 得到整个表格数据
def get_data_all():
    for x in range(2, 17):
        for y in range(2, 7):
            iie.get_text(title=r‘用户管理‘,selector=r‘#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type({0}) > TD:nth-of-type({1})‘.format(x, y),waitfor=10)

get_data_all() 运行得到的部分结果:

运行开始
Main.py- "StepNodeTag:15222350468",Note:
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(2)]
iie.py-IE获取文本:zhouli123
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(3)]
iie.py-IE获取文本:
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(4)]
iie.py-IE获取文本:demouser
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(5)]
iie.py-IE获取文本:2018-07-25 15:08:09
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(2) > TD:nth-of-type(6)]
iie.py-IE获取文本:2018-07-27 09:06:39
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(3) > TD:nth-of-type(2)]
iie.py-IE获取文本:cmbtest
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(3) > TD:nth-of-type(3)]
iie.py-IE获取文本:
iie.py-IE获取文本:[用户管理][#boxTable > TBODY:nth-of-type(1) > TR:nth-of-type(3) > TD:nth-of-type(4)]
iie.py-IE获取文本:系统默认
......

通过这种方式在无法获取整个表格数据文本或者得到部分数据的情况时使用,效果明显。

原文地址:https://www.cnblogs.com/xiaoluoboer/p/9545982.html

时间: 2024-10-10 08:56:15

3 机器人自动化之页面表格数据的定位拾取的相关文章

通过JS获取页面表格选中行信息

在ASP.NET中表格的显式方法多种多样,有html标签<table></table>,有asp服务器控件GridView,还有Repeater控件等都可以帮我们在页面显式表格信息.GridView控件比较强大,它有自带的属性和方法可以用来对显式的表格数据进行各种操作.但是如果使用传统html标签<table></table>或者是Repeater控件来显式数据,又该如何取到选中行的数据呢.这里我们来介绍一下利用JS来取页面表格数据的方法. 如图所示,我们需

将页面中表格数据导出excel格式的文件(vue)

近期由于项目需要,需要将页面中的表格数据导出excel格式的文件,折腾了许久,在网上各种百度,虽然资料不少,但是大都不全,踩了许多坑,总算是皇天不负有心人,最后圆满解决了. 1.安装相关依赖(npm安装可能会出现某些错误,可以使用cnpm): npm install file-saver --save // 保存文件用 npm install xlsx --save // 转二进制用 npm install script-loader --save-dev // xlsx核心文件 2.下载两个核

随笔:ajax传递数组,layui父子页面传值,下来菜单赋值,父页面数据获取,表格数据替换为字符串

一.Ajax向后台传递数组问题:(声明前台我使用的layui框架)例:我们要多前台一个数据表格进行批量删除操作,我们通过复选框选中数据id,将id存入一个数组中,然后利用ajax传递给后台,完成批量删除,再过程中我们需要加上traditional : true代码如下: function batchDel() { var datas; var ids = new Array();// 声明数组 layui.use('table', function() { var table = layui.t

html页面以及表格数据打印的实现

记录是为了更好的成长! 页面打印功能很常见,总结一下: 1.打印表格中的数据 页面引入jquery,也可以不引入,使用jquery操作DOM对象是很方便的 这是一个简单的演示: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="js/jquery-3.3.1.min.js"

Easy-ui Datagrid表格数据的编辑与提交

前言 jQuery EasyUI是一组基于jQuery的UI 插件集合体,而jQuery EasyUI可以打造出功能更加丰富且美观的UI界面.开发者不需要了解复杂的javascript和css样式,只需要了解html标签. 一.    easy-ui基本知识 1.            easy-ui引用js顺序详解 引用Jquery的js文件: <script src="jquery-easyui-1.3.4/jquery-1.8.0.min.js" type="te

小结--通过水晶报表打印表格数据步骤

最近项目用到水晶报表来打印表格数据,现在温故一下: 1.安装CRforVS_13_0水晶报表. 2.在vs2010中创建.xsd 文件,往里面创建一个DataTable,并设置每个字段的数据类型. 3.创建.rpt(报表文件),在里面画要显示的表格,然后绑定数据库字段(右击数据库字段-数据库专家-我的连接-展开树节点找到新建的DataTable)将DataTable中字段拖入表格相应位置. 4.在上层页面的打印事件中New出新建的DataTable,接着将要打印的表格数据(例如:DataGrid

servlet自动获取前端页面提交数据

servlet自动获取前端页面jsp提交数据 以下是本人在学习过程中,因前端页面提交参数过多,后台servlet封装实体类过于麻烦而写的一个工具类,应用于jsp/servlet数据提交后,基于MVC+MyBatis进行数据持久化的过程.这里只介绍页面到servlet(controller)提交数据封装对象的过程,MVC+MyBatis访问数据库不在这里介绍. 1.前端页面及代码 1)前端表单页面构建(用于测试简单构建的页面有点丑陋哦~) 2)前端jsp页面代码   这里使用了Ajax异步 get

Liger UI 表格数据查找/通过条件加载数据

api上的例子是在本地过滤的,无法使用,自己摸索了一下. javascript代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 //初始化ligerui控件 $(function (){         maingrid = $("#maingrid").ligerGrid({             columns: [                 {

基于Birt4.6实现报表表格数据的可编辑

奇葩需求:客户要求某业务系统中生成的报表数据可以编辑.为响应客户的需求,本文基于Birt 4.6实现报表数据的可编辑(伪修改). BIRT 是以 Java 和 JavaEE 为基础为 Web 应用程序开发的基于 Eclipse 的开源报表系统,其本身并不支持报表数据的修改.因此想要实现报表数据的可编辑,需要修改生成报表的渲染页面.本文的方案是在报表生成页面引入Jquery实现报表表格数据的可编辑,这是一种简单的快速实现方式,具体实现方案如下: 1)找到Birt渲染页面 Birt的渲染页面路径..