使用Python自动化Windows GUI操作

13

我希望编写一个Python脚本来自动化在Windows XP中设置VPN服务器的过程,但我唯一知道的方法是使用Windows GUI对话框。我该如何找出这些对话框对系统正在执行的操作并设计一个Python脚本来自动化执行呢?


你可以尝试使用ClointFusion。请在此处查找更多详细信息:https://dev59.com/p2gt5IYBdhLWcg3wxARj#69542053 - Mayur Patil
6个回答

13

你还可以使用pywinauto来进行GUI自动化。

编辑:现在似乎有一个用于创建脚本的GUI,叫做swapy


4
你可以尝试使用Automa - 它是一个Windows自动化工具,可以作为Python库使用:
from automa.api import *

然后,您可以使用像start(..)、click(..)和enter(..)这样的命令来操作UI。 您还可以将该工具作为独立应用程序使用,从其自己的控制台窗口中使用。 如果GUI元素的名称不明显,Automa提供了一个名为get_name_under_mouse()的函数-您可以将鼠标悬停在任何GUI元素上以查找其名称。

声明:我参与了Automa的开发。


1
请注意,Automa不是免费的,您从网上下载的版本是有时间限制的试用版。如果您不愿意为此付费许可证,请勿使用Automa构建任何内容。 - Alex Recarey
截至2021年,以上链接已经失效,并且无法在网络和github上追踪到它们。这些链接被重定向到一些看起来像垃圾邮件的网站。请求SOF验证内容。 - yunus

2

看看 SIKULI - 有一些关于在Windows上运行不完美的报告,但它非常简单易用,可以轻松地玩弄并编写一个简单的脚本。


似乎它可以使用Python工作,但是使用Jython。看起来非常酷。它还有一个IDE,您可以在其中键入并粘贴图像https://www.youtube.com/watch?v=WGEX0dz_f_w&t=23s。这个人做了一些非常复杂的事情,似乎与操作系统和应用程序无关。 - alpha_989
@swanson,Sikuli与Pywinauto、Pyautogui或Autopy相比如何? - alpha_989

1

你可以使用 SendKeys 来发送按键到需要的对话框,如果你还需要鼠标操作,可以使用 一些额外的技巧

或者,你可以使用 StraceNT 监控手动遍历对话框时所做的所有系统调用,并使用 Python 的 Win32 扩展Ctypes 重新生成它们。


我认为strace是我需要的,但我不认为它会起作用,因为一切都发生在资源管理器中。要隔离正确的调用太多事情了。有什么建议吗? - tehr
当前sendkeys网站不可用,值得一提的是Automa是一个商业软件包-个人使用费为99美元。 - Keith Kenny

1

了解如何使用命令(在命令行上)执行您想要的操作,并将这些命令编写成脚本。


这似乎是最好的想法,但我不知道如何通过命令行来实现。有任何建议从哪里开始寻找? - tehr
@tehr,我不熟悉你使用的工具,但我认为在MSDN上肯定有关于这个问题的一些资料。 - hasen
微软并不总是通过命令行提供完成任务的方式。你能期望的最好情况(通常)是所需调用的API函数可以从PowerShell或VBScript中调用。有些任务在GUI中很简单,但需要进行相当数量的编程工作(多个对象的创建/配置等)。简而言之:有时候(即使是糟糕的)GUI自动化也是实现所需功能的唯一可行手段。 - mojo
同意。使用命令行可能是最强大的方法,但对于许多第三方程序来说,API可能不可用。对于这些程序,您将如何通过命令行运行它? - alpha_989

0

PyAutoGUI可以从PyPI使用pip安装。它是跨平台的,可以控制鼠标和键盘。它具有pywinauto的功能以及更多其他功能。它无法识别窗口或GUI控件,但它确实具有基本的屏幕截图和图像识别功能,以单击特定按钮。而且它有很好的文档和维护。

pip install pyautogui


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接