python 桌面自动化_在windows中自动化桌面活动的Python代码

在Windows中,可以通过Python(使用ctypes或一些Python Windows绑定)来访问用户界面,实现自动化的方法有很多:原始windows api--Get/SetCursorPos用于鼠标,HWND api如GetFocus和GetForegroundWindow

Microsoft活动辅助功能(MSAA)/WinEvent——一个通过Win95中的辅助功能API查询UI的API。

UI/自动化(UIA)——Vista中引入的MSAA的替代品(可用于XP SP3 IIRC)。

自动化用户界面来测试它是一项非常重要的任务。有很多问题会绊倒你。

我建议以自动化的方式测试您的自动化框架,以便您可以验证它是否在您正在测试的平台上工作(以识别自动化中的失败与应用程序中的失败)。

另一个考虑是如何处理本地化。还要注意Minimize/Maximize/…的名称。。。也是本地化的,并且可以使用与应用程序不同的语言(系统与用户区域设置)!

在伪代码中,最小化应用程序的MSAA程序类似于:window = AccessibleObjectFromWindow(FindWindow("My Window"))

titlebar = [x for x in window.AccessibleChildren if x.accRole == TitleBar]

minimize = [x for x in titlebar[0].AccessibleChildren if x.Name == "Minimize"]

if len(minimize) != 0: # may already be minimized

mimimize[0].accDoDefaultAction()

MSAA可访问项存储为(object: IAccessible, childId: int)对。这里需要注意正确的调用(例如,get_accChildCount只使用IAccessible,所以当childId不是0时,必须返回0而不是调用get_accChildCount)!

IAccessible调用可以返回不同的错误代码来指示"this object does not support this property"——例如DISP_E_MEMBERNOTFOUND或E_NOTIMPL。

注意窗户的状况。如果窗口被最大化然后最小化,restore会将窗口还原到其最大化状态,因此您需要再次将其还原到正常/窗口状态。

MSAA和UIAapi不支持鼠标右键单击,因此需要使用Win32 API来触发它。

MSAA模型不支持treeview继承权信息——它将其显示为一个平面列表。另一方面,UIA将只枚举可见的元素,因此您将无法访问折叠的UIA树中的元素。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值