zoukankan      html  css  js  c++  java
  • 18-08-27 机器人自动化之页面表格数据的定位拾取

    步骤一  找到要定位的表格的位置  一般第一行的前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 中“用户管理”界面为例, 获取界面中的数据。
    e98902d429ca457cb8283bcb9e569446_a.png

    获取代码方式:
    1. 设置功能模块
    2634d8356110444a9ab8398e3809fe4a_a.png
    2. 获取的文本位置后,点击运行此组件
    98693f2b0b93487589da2f345c1dad13_b.png
    3. 点击定位代码
    2ff99f50fe2a4c618bb2ff076ffae76a_c.png
    4. 得到代码
    2957c786c5cf4b6eb42e603c6aaae210_d.png

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

    # 横行数据, 分别为第一行第一个和第三个数据
    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 中“用户管理”界面为例, 获取界面中的数据。
    e98902d429ca457cb8283bcb9e569446_a.png

    获取代码方式:
    1. 设置功能模块
    2634d8356110444a9ab8398e3809fe4a_a.png
    2. 获取的文本位置后,点击运行此组件
    98693f2b0b93487589da2f345c1dad13_b.png
    3. 点击定位代码
    2ff99f50fe2a4c618bb2ff076ffae76a_c.png
    4. 得到代码
    2957c786c5cf4b6eb42e603c6aaae210_d.png

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

    # 横行数据, 分别为第一行第一个和第三个数据
    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获取文本:系统默认
    ......
    

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

  • 相关阅读:
    JasperReport环境设置
    JasperReports入门,JasperReports是什么?
    插入算法
    java web项目(spring项目)中集成webservice ,实现对外开放接口
    Java代码中的(解压7z加密版)
    Java底层基础题
    sql执行过长,如何入手优化
    集群环境(session多服务器共享的方案梳理)
    SimpleDateFormat优化写法
    java面试题总结
  • 原文地址:https://www.cnblogs.com/xiaoluoboer/p/9545982.html
Copyright © 2011-2022 走看看