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,这种就是典型的跨域操作
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})