Bob's Blog

Web开发、测试框架、自动化平台、APP开发、机器学习等

返回上页首页

记录桌面端应用的自动化的一些坑和解决方式



早些年做过桌面端应用的自动化,最近几年因为公司的业务发展,桌面端应用做了起来,于是也需要像web、app、api之类的把桌面端的自动化做起来。

主要是windows的应用,会用到win32接口和一些封装后的包,加上自己的定义。这里记录了一篇入门:Python自动化操作windows桌面软件 ,当然实际的封装还是比较多的,也有一些特殊处理,这里记录一些坑。

1. win32的事件不被应用的少许控件接受,无响应回馈,这个比较容易解决,就是模拟真实鼠标行为,当然这个尽量少一些,因为会造成不稳定因素。

2. 在不同电脑上运行时,操作有偏差。这个也好解决,需要把电脑的缩放都改成100%。

3. 应用集成了第三方收费控件,不是直接用winform做出来的,会难以解析该区域的元素类别。这个麻烦一些,一旦涉及的业务较重要,这个就尽量要自动化。目前的解决方式是采用视觉的方案,这个细节我后面更新,效果还可以,效率一般,但比什么都做不了的好。

4. 将写好的脚本放到虚拟机上跑的时候,经常出现异常报错,无论是鼠标事件还是截图事件,报错的信息跟win32ui有关的居多。这个问题后来发现在一直保持连接远程虚拟机时不出现,报错有包含'no active desktop'的信息,确定了是因为有的事件是需要真实桌面渲染展示,而断开连接后就无法维持了。但是又不能一直连接着好些个远程虚拟机。于是把下面的代码编辑到一个bat文件中,在打算退出远程连接的时候用管理员权限运行,会自动退出连接但保持了真实桌面,目前看到异常报错消失了。通过%windir%\System32\tscon.exe RDP-Tcp#*NNN* /dest:console手动断开RDP的话,原桌面也不会休眠,其中NNN是当前远程桌面的session。

for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (
  %windir%\System32\tscon.exe %%s /dest:console
)

 

下一篇:  Systemd管理gunicorn服务
上一篇:  pytorch转为onnx并调用时遇到的问题汇总

共有0条评论

添加评论

暂无评论