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

Posted xiaoluoboer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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-RPAstudio-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-RPAstudio-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获取文本:系统默认
......

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









































以上是关于3 机器人自动化之页面表格数据的定位拾取的主要内容,如果未能解决你的问题,请参考以下文章

selenium之POM模式的实现

UI自动化之特殊处理三(日期控件表格富文本)

移动测试之appium+python 入门代码

Uipath 鼠标点击光标偏移的使用

Selenium元素定位之页面检测技巧

怎么用经纬度查找自己在地图中的位置?