用于在Windows中自动执行桌面活动的Python代码

x3naxklr  于 2023-01-31  发布在  Windows
关注(0)|答案(6)|浏览(123)

我想在Windows环境下使用Python自动化桌面活动。如何做到这一点?一些例子也会很有帮助。
所谓桌面活动,我指的是诸如控制鼠标和键盘、访问活动窗口属性、双击桌面上的图标、最小化和最大化窗口、通过键盘在输入弹出窗口中输入数据等操作。

avwztpqn

avwztpqn1#

看一下SIKULI
Sikuli是一种使用图像(屏幕截图)自动化和测试图形用户界面(GUI)的可视化技术。
SIKULI使用了一个非常聪明的组合,即截图,并将其嵌入到python(实际上是jython)脚本中。
截图:

并在代码中使用它们:

zu0ti5jz

zu0ti5jz2#

您可以尝试Automa
这是一个用Python编写的Windows GUI自动化工具,使用非常简单。例如,您可以执行以下操作:

# 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)

可用命令的完整列表可以在here中找到。

  • 免责声明 *:我是Automa的开发人员之一。
ecbunoof

ecbunoof3#

在Windows中,有多种自动化用户界面的方法可以通过Python访问(使用ctypes或一些Python窗口绑定):
1.原始窗口API--用于鼠标的Get/SetCursorPosGetFocusGetForegroundWindow等HWND API

  1. AutoIt--一种自动化脚本语言:Calling AutoIt Functions in Python
  2. Microsoft Active Accessibility(MSAA)/ WinEvent --用于通过Win95中的辅助功能API询问UI的API。
  3. UI/自动化(UIA)--Vista中引入的MSAA的替代品(适用于XP SP3 IIRC)。
    自动化一个用户界面来测试它是一项不平凡的任务,有很多陷阱会让你犯错。
    我建议以自动化的方式测试您的自动化框架,这样您就可以验证它在您正在测试的平台上是否工作(以识别自动化API中的故障与应用程序中的故障)。
    另一个需要考虑的问题是如何处理本地化。还要注意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_MEMBERNOTFOUNDE_NOTIMPL
请注意窗口的状态。如果窗口先最大化然后最小化,则还原会将窗口还原到最大化状态,因此您需要再次还原窗口以使其恢复到正常/窗口化状态。
MSAAUIA API不支持鼠标右键单击,因此您需要使用Win32 API来触发它。
MSAA模型不支持treeview层次结构信息--它将其显示为平面列表。另一方面,UIA将仅枚举可见的元素,因此您将无法访问UIA树中折叠的元素。

7vhp5slm

7vhp5slm4#

您可以使用PyAutoGUI,它提供了一种跨平台的Python方法来执行GUI自动化。

下面是一个简单的代码,将鼠标移动到屏幕中间:

import pyautogui
screenWidth, screenHeight = pyautogui.size()
pyautogui.moveTo(screenWidth / 2, screenHeight / 2)

相关问题:Controlling mouse with Python.
∮ ∮ ∮ ∮ ∮
示例:

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

∮ ∮ ∮ ∮ ∮
它提供JavaScript样式的消息框。
以及其他。
有关其他建议,请查看:Python GUI automation library for simulating user interaction in apps.

yquaqz18

yquaqz185#

看一看BotCity Framework,这是一个开源RPA框架。
它只是python(没有中间代码,没有jython等)。
下面的示例执行SAP并登录:

from botcity.core import DesktopBot
from botcity.maestro import AlertType, AutomationTaskFinishStatus, Column

class Bot(DesktopBot):
    def action(self, execution):
        self.execute("saplogon.exe")
        
        # #{image:"login"}
    
        if not self.find( "user", matching=0.97, waiting_time=10000):
            self.not_found("user")
        self.click_relative(172, 5)
        
        self.paste(user)
        self.tab()
        self.paste(pass)
        self.enter()
        
if __name__ == '__main__':
    Bot.main()

作为Sikuli,你有一个裁剪元素的工具,并且有关于界面和UI元素的视觉线索,但是在这个例子中,它是一个编辑.py文件(不是中间代码)的工具,所以你可以在你的自动化中使用任何python lib。

m4pnthwp

m4pnthwp6#

您可以尝试ClointFusion
它还是一个基于Python的RPA平台,内部使用了PyAutoGUI以及其他软件包。
它有一个友好的基于浏览器的拖放BOT生成器:DOST
您可以找到100多个易于使用的功能:

  1. 6个图形用户界面功能,以采取任何输入从用户
    1.鼠标操作的4项功能
    1.窗口操作中的6个功能(仅在Windows操作系统中工作)
    1.窗口对象上的5个函数(仅适用于Windows操作系统)
    1.文件夹操作的8项功能
  2. Excel操作中的28个函数
    1.键盘操作上的3个功能
  3. 5个功能的屏幕抓取操作
    1.浏览器操作的11项功能
    1.警报消息上的4个功能
  4. 3个字符串操作函数
    1.加载与表情符号、拍摄照片、闪光灯(弹出)消息等相关的各种功能
  • 免责声明:我是ClointFusion * 的开发人员之一

相关问题