1. 程式人生 > >3 機器人自動化之頁面表格數據的定位拾取

3 機器人自動化之頁面表格數據的定位拾取

設置 overflow flag 個數 code ros sea 再次 ans

步驟一 找到要定位的表格的位置 一般第一行的前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獲取文本:系統默認
......

通過這種方式在無法獲取整個表格數據文本或者得到部分數據的情況時使用,效果明顯。

3 機器人自動化之頁面表格數據的定位拾取