主机和虚拟机之间的拖拽是一个常用功能,比如VMware Workstation, VMware Horizon View 的用户都可以通过拖拽实现主机和虚拟机之间的文件拷贝。最近我进行了调研,并实现在了VMware Horizon view上的DnD自动化测试,做一些经验总结。
为什么使用LDTP + Pywinauto?
LDTP 是我常用的UI自动化测试框架,因此主体的对象识别操作都是用了它,但是对于拖拽的支持上,我的试验结果:
1. DnD 从client端到agent端(就是Host to Guest):
mousemove('paneProgram*’,<拖拽的文件名>)
generatemouseevent(1300,255,'b1p’)
simulatemousemove(1300,255,930,570)
time.sleep(2)
click('W1064_Ent','paneMKS*’) #让打开的虚拟桌面获取焦点
generatemouseevent(930,570,'b1r’)
结果:这种实现可以成功,但是不是太稳定
2. DnD 从agent端到client端(就是Guest to Host):
结果:LDTP 一旦把鼠标点击到虚拟桌面中,后续的鼠标操作就失效了,这种方案不可行。
Pywinauto有关于mouse和keyboard操作的模块,对应的结果为:
1. DnD 从client端到agent端(就是Host to Guest):