26

我必须使用 Windows 模拟包来执行重复性任务,每次使用的选项都略有不同。

由于我讨厌重复点击,基于懒惰和人类引入的错误数量,我想自动驱动这个程序。有问题的程序不支持脚本,没有 API,没有 COM,nada,nyet,nravin。据我所知,自动驱动该程序的唯一方法是模仿人类(即键盘和鼠标宏)。

我知道 AutoHotKey 但我不认为它做我想要的。(或者它可能会做我想做的事,但它的脚本语言很糟糕。)

要求是:

  • 必须允许动作之间的时间延迟,或事件检测来触发动作。

    模拟最多可能需要十分钟才能运行,因此 GUI 驱动程序必须等到模拟完成才能开始新的模拟。

    一种方法是等待十分钟,然后希望模拟已经完成。另一种方法是使其成为事件驱动的,即注意“模拟运行...”对话框消失并被“模拟完成”对话框取代。

  • 必须允许组合复杂的键盘输入。

    每次模拟运行所需的某些键盘输入都不同。例如,模拟描述可能采用格式[Project name][Scenario name][Option 1][Option 2]...,并且必须为每个模拟输入。

    我知道 AutoHotKey 允许基本级别的输入自定义,但我对文档的随意阅读使脚本语言看起来像是某种可怕的恐怖。

  • 这是为了工作,所以任何解决方案都必须免费用于商业用途。

我会接受任何符合上述标准的解决方案,但我对可以从 Python 驱动的东西有强烈的偏好。但是,我也会接受自动化的 GUI 测试工具,我可以自定义这些工具来做我想做的事情 - 可能是 Win32 GUI 相当于Selenium的浏览器?- 将生成自定义输出或其他任何有效的键盘宏记录器。

4

6 回答 6

11

Sikuli 是一种使用图像(屏幕截图)自动化和测试图形用户界面 (GUI) 的视觉技术。Sikuli 包括 Sikuli Script(Jython 的可视化脚本 API)和 Sikuli IDE(用于轻松编写带有屏幕截图的可视化脚本的集成开发环境)。Sikuli 脚本可以自动执行您在屏幕上看到的任何内容,而无需内部 API 的支持。您可以通过编程方式控制网页、Windows/Linux/Mac OS X 桌面应用程序,甚至是在模拟器中或通过 VNC 运行的 iphone 或 android 应用程序。

看看Sikuli,它对我有用。

于 2012-03-14T09:53:42.330 回答
6

看看Automa - 它是用 Python 编写的。它既可以用作独立工具,也可以用作您自己脚本中的 Python 库:

from automa.api import *

它允许通过单击、按下、写入等命令自动化任何 Windows 应用程序。

可以在http://www.getautoma.com/blog/category/ui-automation-examples找到一些自动化脚本示例

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

于 2013-03-12T13:13:25.340 回答
6

看看这个 https://pywinauto.github.io/

您可以使用 python 脚本本身来控制您的 Windows 应用程序。

优点是:

  • 无需学习新语言/语法
  • 与其他现有脚本轻松集成
于 2017-01-08T03:31:03.877 回答
5

再看一下 Autohotkey,根据您的要求,它似乎适合这项工作。

或者检查来自 Microsoft 的 UI 自动化:http: //msdn.microsoft.com/en-us/library/ms747327.aspx和白色:http ://white.codeplex.com/

于 2012-03-14T19:55:22.453 回答
1

您可以使用适用于 Windows、macOS 和 Linux 的 Python PyAutoGUI 库。

必须允许动作之间的时间延迟。

在每个键之间输入四分之一秒停顿的示例:

import pyautogui
pyautogui.typewrite('Hello world!', interval=0.25)

这是在每次 PyAutoGUI 调用后设置 2.5 秒暂停的示例:

pyautogui.PAUSE = 2.5

必须允许组合复杂的键盘输入。

结帐键盘控制功能,您可以在其中pyautogui.typewrite输入内容。您可以传递变量以允许复杂的键盘输入。

事件检测以触发操作。

您可以使用定位函数在屏幕上直观地查找某些内容,并在一个简单的循环中根据该条件创建条件。

解决方案必须免费用于商业用途。

它在允许商业用途的 BSD 下获得许可。


也可以看看:

于 2018-01-07T14:40:37.933 回答
0

RIATest没有使用 Python,但在其他方面符合要求。它类似于 Selenium,但适用于 Win32web。

RIATest 使用 Windows UI 自动化 API,并且可以驱动任何将其 GUI 正确地暴露给 UI 自动化的 Windows 应用程序(包括所有本机和 .NET 应用程序)。

免责声明:我在 RIATest 公司 Cogitek 工作。

于 2013-05-09T14:16:37.587 回答