从脚本驱动Windows GUI程序

Li-*_*Yip 23 python user-interface winapi automation gui-testing

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

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

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

要求是:

  • 必须允许操作之间的时间延迟,或事件检测以触发操作.

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

    一种方法是等待十分钟,并希望模拟完成.另一种方法是使其成为事件驱动的,即观察"模拟运行..."对话框消失并替换为"模拟完成"对话框.

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

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

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

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

我将接受任何符合上述标准的解决方案,但我非常喜欢可以从Python驱动的东西.但是,我也会接受自动化的GUI测试工具,我可以自定义做我想要的 - 可能是一个Win32 GUI相当于Selenium的浏览器? - 键盘宏录制器,它将生成自定义输出或其他任何有效的输出.

Ada*_*dam 11

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

看看Sikuli,它对我有用.


Tyt*_*tus 6

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

from automa.api import *
Run Code Online (Sandbox Code Playgroud)

它允许通过点击,按下,写入等命令自动执行任何Windows应用程序.

有关自动化脚本的一些示例,请访问http://www.getautoma.com/blog/category/ui-automation-examples

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

  • 请注意,这是一个花钱的python库 (7认同)

小智 6

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

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

优点是:

  • 无需学习新语言/语法
  • 与其他现有脚本轻松集成


Cil*_*vic 5

给Autohotkey另一个外观,根据您的要求,它似乎适合这项工作.

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