【实战案例】梦想云ERP系统数据获取和填写 一 (共2节)

山海师 2019-1-4 5781


UiBot实战案例—梦想云ERP系统数据获取和填写(一 


使用UIBot最主要的就是两个作用:数据的获取、数据的写入

本次教程就用以梦想云的ERP系统为范例给大家介绍下如何实现利用元素来获取数据和写入数据。


1、使用浏览器命令中的启动新浏览器命令,来打开梦想云的网站:https://www.mxyun.com/

_【实战案例】梦想云ERP系统数据获取和填写 一 (共2节)

_【实战案例】梦想云ERP系统数据获取和填写 一 (共2节)


2、这里就以财务版为例,使用元素点击命令,获取到财务版的体验按钮,并点击

_【实战案例】梦想云ERP系统数据获取和填写 一 (共2节)

在随后的类别,就选择数码电器类别

_【实战案例】梦想云ERP系统数据获取和填写 一 (共2节)_【实战案例】梦想云ERP系统数据获取和填写 一 (共2节)


3、用元素点击功能找到账单管理中的收款单

_【实战案例】梦想云ERP系统数据获取和填写 一 (共2节)

这个表格就是我们需要抓取的数据了

_【实战案例】梦想云ERP系统数据获取和填写 一 (共2节)


4、我们尝试使用数据抓取功能来抓取数据

_【实战案例】梦想云ERP系统数据获取和填写 一 (共2节)

点击选择目标按钮后把鼠标移动到表格的数据上,选择表格中的单元格数据,左键单击鼠标确定选择

_【实战案例】梦想云ERP系统数据获取和填写 一 (共2节)

UIBot会自动识别出当前是一个表格,并提示你是否要采集整个表格的数据

_【实战案例】梦想云ERP系统数据获取和填写 一 (共2节)

我们点击【是】按钮,就可以看到采集下来的数据。

_【实战案例】梦想云ERP系统数据获取和填写 一 (共2节)

但是到现在这一步会发现一个问题,就是这里采集的数据不完整,只有到第8列。这是为什么呢?

通过实际分析这个表格可以发现,这个并不是一个标准的表格元素(它实际上是由DIV来模拟出的表格样式),所以我们要想获取全部内容,得要再抓第二次数据,把表格剩下的另外一半抓取下来,存放到另外一个变量里。

_【实战案例】梦想云ERP系统数据获取和填写 一 (共2节)

再次抓取数据,鼠标移动到后半段的表格中,再次抓取数据存入变量arrayData1中

_【实战案例】梦想云ERP系统数据获取和填写 一 (共2节)


5、表格的两段数据都获取到了,那剩下最重要的就是把两段数据合并起来,这样才方便后续的使用

_【实战案例】梦想云ERP系统数据获取和填写 一 (共2节)

建立两个空数组,先把单条的前半段和后半段数据循环遍历出来,合并到一起,在把整条数据以数组的形式存放到另一个数组中,方便后续使用。


梦想云ERP系统数据获取和填写(二):https://forum.uibot.com.cn/thread-38.htm

最新回复 (10)
  • mawu 2019-1-18
    2
    神操作,操作神奇,惊艳。服了
  • mawu 2019-1-18
    3
    列为,不好意思哈,在下先包揽二三名先。请第四楼得邻居叫我买五楼,谢谢哒。
  • 侯baoyu宝玉 2019-1-29
    4
    占个坑先,在python火热的时候还有比python厉害的~~~牛x~~~
  • 李_16871 2019-2-25
    5
    好家伙~
  • 罗小黑 2019-4-15
    6
    神操作,操作神奇,惊艳。服了
  • majing 2019-4-24
    7
    不咋地
  • 飘落的信 2019-6-19
    8
    dim hWeb = ""
    dim arrayData = ""
    dim arrayData1 = ""
    dim 数组1 = ""
    dim 数组2 = ""
    dim 新数组=""
    dim index=""
    dim 组合数组
    dim 前面数量=0,后面数量=0
    hWeb = WebBrowser.BindBrowser("chrome",10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200})
    arrayData = UiElement.DataScrap({"html":{"attrMap":{"parentid":"ttp","tag":"TABLE"},"index":2,"tagName":"TABLE","title":"梦想云管理平台","url":"https://a.mxyun.com/"},"wnd":[{"app":"chrome","cls":"Chrome_WidgetWin_1","title":"*"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}]},{"Columns":[],"ExtractTable":1},{"objNextLinkElement":"","iMaxNumberOfPage":5,"iMaxNumberOfResult":-1,"iDelayBetweenMS":1000,"bContinueOnError":false})
    arrayData1 = UiElement.DataScrap({"html":{"attrMap":{"css-selector":"body>div>div>div>div>div>div>div>div>div>div>div>div>table","parentid":"ttp","tag":"TABLE"},"index":0,"tagName":"TABLE","title":"梦想云管理平台","url":"https://a.mxyun.com/"},"wnd":[{"app":"chrome","cls":"Chrome_WidgetWin_1","title":"*"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}]},{"Columns":[],"ExtractTable":1},{"objNextLinkElement":"","iMaxNumberOfPage":5,"iMaxNumberOfResult":-1,"iDelayBetweenMS":1000,"bContinueOnError":false})
    组合数组=[]
    index = 0
    dim 数组下标 = UBound(arrayData)

     //每次循环时将两个数组前后拼接起来
    For i = 0 To 数组下标 step 1   
        数组1 = []
        数组2 = []
        新数组=[]
        数组1=(arrayData[前面数量])
        数组2=(arrayData1[后面数量])
        新数组 = join_array(数组1,数组2)
        组合数组[index] = 新数组
        
        前面数量=前面数量+1
        后面数量=后面数量+1
        index=index+1
    Next

    For Each value In 组合数组
     TracePrint value
    Next

    Function join_array(arr1, arr2)
        dim newarr = []
        dim i = 0
        for each e in arr1 
            newarr[i] = e
            i = i + 1
        Next
        for each e in arr2 
            newarr[i] = e
            i = i + 1
        Next
        return newarr
    End Function
  • 飘落的信 2019-6-19
    9

    楼主的拼接数据部分没看懂,自己模仿着写了一个,好像也可以实现。合并数组函数是用的一个大佬的。^_^

  • 何泽森 7月前
    10
  • 凡凡 6月前
    11
    空值如何表达呢?
返回
发新帖