好久没写文章了。主要是最近换了工作。工作太忙,闹心的事情也很多的。自己还在熟悉新的环境,新的业务。
好消息是,可能会有更多,更不一样的沉淀分享出来。像Go, docker,k8s,人工智能,高可用,海量数据,国产化,全链路压测,安全测试等等,当然还得沉淀沉淀,请耐心等待。
坏消息是,可能更新的频率说不准了。
先简单说说现在的工作,刚过试用期,头三个月还是蛮难受的,主要是管理有些混乱,团队有些人躺平,要驱动这些人干活,比较难受,然后线上问题太多,感觉自己就是一个客服和传达指令,以及跑腿的。还好内心够强大,一切都挺过来了。
现在公司主要是做平台的,都是做企业级的客户,很牛叉的客户太多,财神爷不好得罪,自己学习总结的时间有限,大部分时间被内耗和琐事牵扯了。
这边我要负责桌面的团队。感觉这边团队自动化就是0.
UI的确是也不是很好做,特别是兼容这些平台。
好了,废话不多说,最近发现微软的一个桌面测试框架,uiautomation, 跟uiautomator就差一点,有种似曾相识的感觉。
安装
pip install uiautomation
程序启动
subprocess.Popen(args='D:\Release\Higemi.exe',cwd=r"D:\Release")
窗口定位
cas = automation.WindowControl(searchDepth=1, AutomationId='myMainWindow', Name='Login')
控件定位
login=cas.ButtonControl(AutomationId ="btn_login")
鼠标动作
automation.Win32API.MouseClick(600,250)
automation.Win32API.MouseWheelDown(2)
如果要定位元素,可以用以下命令。或者用Inspector,Spy++等windows工具,
#在超时时间内寻找指定的窗口或控件,找不到则抛出异常
automation.WaitForExist(cas, 3)
automation.py –t3, 3 秒后遍历当前窗口所有控件
automation.py –d2 –t3, 3 秒后遍历当前窗口前三层控件
automation.py –r –d1 –t0 -n, 0 秒后遍历 root 的第一层子控件,并显示控件完整名称
automation.py –c –t3, 3 秒后遍历鼠标光标下面的控件信息
automation.py –c –t3 -d-2, 3 秒后遍历鼠标光标下面的控件向上两层的父控件
并且自带控件查看工具,比 Windows 自带的 Inspector.exe 更加好用: 运行 CMD,输入 automation.py -t3 回车,然后 3 秒内切换到应用界面。
感觉找的元素,定位的元素也是有限的。
可以用如下方式来操作控制元素。
如果:
root(Name='Desktop', Depth=0)
window1(Depth=1)
control1-001(Depth=2)
control1-...(Depth=2)
...
control1-100(Depth=2)
window2(Name='window2', Depth=1)
control2-1(Depth=2)
control2-1-001(Depth=3)
control2-1-...(Depth=3)
...
control2-1-100(Depth=3)
control2-2(Depth=2)
control2-3(Depth=2)
control2-4(Name='2-4', Depth=2)
editcontrol(Name='myedit1', Depth=3)
editcontrol(Name='myedit2', Depth=3)
如果你想查在 'hi'里ditControl 找名为 'myedit2' , 代码可以这么写:
uiautomation.EditControl(searchDepth=3, Name='myedit2').SendKeys('hi')
如果前面有200个controls,这样查找的性能就相当慢。 这样写就性能好一点:
window2 = uiautomation.WindowControl(searchDepth=1, Name='window2') # search 2 times
sub = window2.Control(searchDepth=1, Name='2-4') # search 4 times
edit = sub.EditControl(searchDepth=1, Name='myedit2') # search 2 times
edit.SendKeys('hi')
你也可以组合起来写。
uiautomation.WindowControl(searchDepth=1, Name='window2').Control(searchDepth=1, Name='2-4').Edi
总体用下来,马马虎虎。很多元素定位不到,或者窗口定位不到。
但是也有好处,像右键,像某些控件,可以定位到,比别的工具好用,所以我打算结合pyautogui, winappdriver. 这样各取所长,就能达到我的目的了。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有