uibot一些知识点

uibot为什么可以操作界面元素?

Windows上的应用程序实际上由很多开发框架,包括SDK,MFC,WTL,wINfORM,WPF,QT,JAVA等等,还有IE和chrome中的web应用。这些应用程序其实都提供了界面元素的查找和操作接口。从技术上来说,Uibot无非就是调用这些接口而已。

什么是有目标命令

在命令中指定一个界面元素。在运行的时候,会先查找这个界面元素是否存在,如果存在,则操作会针对这个界面元素进行。如果不存在,会反复查找,直到超过指定的时间,在使用uibot的时候,应该优先使用有目标的命令,因为有目标的命令会准确很多

跨域网页

有时候在一个网页中,会通过iframe嵌套的方式,在其中内嵌一个其他域名下的网页。以qq为例子,当前网页的域名为https://mail.qq.com/,内嵌的域名为https://xui.ptlogin2.qq.com/cgi-bin/xlogin,这种就是典型的跨域操作
uibot一些知识点_第1张图片

IE浏览器不会对跨域做特殊处理,但是chrome,处于安全考虑,会禁止对iframe下的页面进行操作,包括页面元素的获取等,即我们无法自动化操作

无目标命令

  • "模拟移动"命令,就是一个无目标命令,它是靠指定x,y坐标来确定位置的
  • 在window操作系统中,屏幕上的每一个点都有一个唯一的坐标,坐标由两个整数组成,一个称为x,一个称为y。左上角为(0,0).
  • 窗口变化,原来的坐标就不能匹配了,导致操作和预期不一致。
  • 图像命令也是无目标命令,它会在屏幕上的指定区域,按照从左到右,从上到下的顺序一次扫描,看这个图像能否出现在指定区域当中
objPoint = Image.Find({
     "wnd":[{
     "cls":"classFoxitPhantomPersonal","title":"xxx- Foxit PhantomPDF个人版","app":"FoxitPhantom"}]},{
     "height":0,"width":0,"x":700,"y":700},@res"n8ni339k-sjjp-a0es-9c6e-0uqqlfab7vfq.png",0.9,10000,{
     "bContinueOnError":False,"iDelayAfter":300,"iDelayBefore":200,"bSetForeground":True,"sMatchType":"GrayMatch","iSerialNo":1})

uibot提供的图像命令下面有一条"点击图像",它其实是“查找图像”,“模拟移动”,“模拟点击”三条命令的组合

图像命令,可以在无法获取界面元素的情况下,在指定的区域内找到准确的操作位置,但是还不能像有目标的命令那样,把界面元素中的内容读出来,这时候就需要用到OCR识别技术了。

无目标命令的缺点,特别是图像,OCR命令

  • 速度慢于有目标命令
  • 当图像备遮挡时,会出现识别或查找错误
  • 需要依赖图像文件,一旦丢失图像文件,无法正常运行
  • OCR需要连接互联网

你可能感兴趣的:(uibot)