# to double click on an icon on the desktop
doubleclick("Recycle Bin")
# to maximize
click("Maximize")
# to input some text and press ENTER
write("Some text", into="Label of the text field")
press(ENTER)
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。 请注意窗口的状态。如果窗口先最大化然后最小化,则还原会将窗口还原到最大化状态,因此您需要再次还原窗口以使其恢复到正常/窗口化状态。 MSAA和UIA API不支持鼠标右键单击,因此您需要使用Win32 API来触发它。 MSAA模型不支持treeview层次结构信息--它将其显示为平面列表。另一方面,UIA将仅枚举可见的元素,因此您将无法访问UIA树中折叠的元素。
pyautogui.typewrite('Hello world!') # prints out "Hello world!" instantly
pyautogui.typewrite('Hello world!', interval=0.25) # prints out "Hello world!" with a quarter second delay after each character
6条答案
按热度按时间avwztpqn1#
看一下SIKULI。
Sikuli是一种使用图像(屏幕截图)自动化和测试图形用户界面(GUI)的可视化技术。
SIKULI使用了一个非常聪明的组合,即截图,并将其嵌入到python(实际上是jython)脚本中。
截图:
并在代码中使用它们:
zu0ti5jz2#
您可以尝试Automa。
这是一个用Python编写的Windows GUI自动化工具,使用非常简单。例如,您可以执行以下操作:
可用命令的完整列表可以在here中找到。
ecbunoof3#
在Windows中,有多种自动化用户界面的方法可以通过Python访问(使用
ctypes
或一些Python窗口绑定):1.原始窗口API--用于鼠标的
Get/SetCursorPos
、GetFocus
和GetForegroundWindow
等HWND APIAutoIt
--一种自动化脚本语言:Calling AutoIt Functions in PythonMSAA
)/ WinEvent --用于通过Win95中的辅助功能API询问UI的API。UIA
)--Vista中引入的MSAA
的替代品(适用于XP SP3 IIRC)。自动化一个用户界面来测试它是一项不平凡的任务,有很多陷阱会让你犯错。
我建议以自动化的方式测试您的自动化框架,这样您就可以验证它在您正在测试的平台上是否工作(以识别自动化
API
中的故障与应用程序中的故障)。另一个需要考虑的问题是如何处理本地化。还要注意Minimize/Maximize/...的名称也是本地化的,并且可以使用与应用程序不同的语言(系统语言环境与用户语言环境)!
在伪代码中,最小化应用程序的
MSAA
程序如下所示: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
。请注意窗口的状态。如果窗口先最大化然后最小化,则还原会将窗口还原到最大化状态,因此您需要再次还原窗口以使其恢复到正常/窗口化状态。
MSAA
和UIA
API不支持鼠标右键单击,因此您需要使用Win32 API
来触发它。MSAA
模型不支持treeview层次结构信息--它将其显示为平面列表。另一方面,UIA
将仅枚举可见的元素,因此您将无法访问UIA
树中折叠的元素。7vhp5slm4#
您可以使用PyAutoGUI,它提供了一种跨平台的Python方法来执行GUI自动化。
下面是一个简单的代码,将鼠标移动到屏幕中间:
相关问题:Controlling mouse with Python.
∮ ∮ ∮ ∮ ∮
示例:
∮ ∮ ∮ ∮ ∮
它提供JavaScript样式的消息框。
以及其他。
有关其他建议,请查看:Python GUI automation library for simulating user interaction in apps.
yquaqz185#
看一看BotCity Framework,这是一个开源RPA框架。
它只是python(没有中间代码,没有jython等)。
下面的示例执行SAP并登录:
作为Sikuli,你有一个裁剪元素的工具,并且有关于界面和UI元素的视觉线索,但是在这个例子中,它是一个编辑.py文件(不是中间代码)的工具,所以你可以在你的自动化中使用任何python lib。
m4pnthwp6#
您可以尝试ClointFusion
它还是一个基于Python的RPA平台,内部使用了PyAutoGUI以及其他软件包。
它有一个友好的基于浏览器的拖放BOT生成器:DOST
您可以找到100多个易于使用的功能:
1.鼠标操作的4项功能
1.窗口操作中的6个功能(仅在Windows操作系统中工作)
1.窗口对象上的5个函数(仅适用于Windows操作系统)
1.文件夹操作的8项功能
1.键盘操作上的3个功能
1.浏览器操作的11项功能
1.警报消息上的4个功能
1.加载与表情符号、拍摄照片、闪光灯(弹出)消息等相关的各种功能