如何使用 Jenkins 的 Autoit 打开 GUI 程序
How open GUI program with Autoit from Jenkins
我需要自动化 Windows GUI 程序,该程序 运行 在 Windows 中。为此,我在 AWS 上设置了一台 Windows 2012 R2 机器,在其上安装了 Autoit,并编写了启动 GUI 程序并在其上执行操作的脚本(我们称此脚本为 auto.au3)。
我运行 这个脚本从Windows 命令行向它传递一个参数,并且它工作得很好。问题是我需要从 Jenkins 启动它,当我通过作业调用 auto.au3 时,脚本似乎无法打开 GUI 程序。
我在 Windows 上将 Jenkins 配置为从站(所以我从我的 "main" Jenkins 调用它),启用 "allow service to interact with the desktop",我将 Autoit 安装目录作为 PATH 环境变量添加到Jenkins 和我在 Jenkins 中编写了批处理命令(直接在 Windows 上运行)。看起来像这样(%domain% 是一个 jenkins 构建参数):
SET PATH=%PATH%;%AUTOIT_PATH%
AutoIt3 C:\Users\Administrator\Desktop\auto.au3 param1 "%domain%"
auto.au3 的第一步是:
Run("C:\Program Files (x86)\GUIprogram.exe")
从 Windows 执行时工作正常,但从 Jenkins 启动时无法打开程序并且作业卡住了。
我还尝试创建一个 python 脚本,运行s auto.au3 脚本来检查错误是否在 PATH 环境变量中,但我检查 python 工作正常直到 运行s auto.au3,然后它也卡在了第一步。同样,只有当我从 Jenkins 调用它时才会发生。如果我在机器上登录并直接 运行 执行批处理命令,它就可以工作。
是否有一些限制可以避免通过 Jenkins 启动 GUI 程序?我是否错过了一些允许它的配置?
非常感谢!
--编辑------
我启动了应用程序并删除了 "launch app" 代码行,但它仍然没有任何反应。 auto.au3 似乎什么都没做。
好的,经过多次调查,我发现问题出在奴隶 Jenkins 的启动方式上。我在这个 Whosebug 问题回复中找到了解决方案:
这个问题并没有真正相关,但 Jason Swager 的回复解决了这个问题。
我需要自动化 Windows GUI 程序,该程序 运行 在 Windows 中。为此,我在 AWS 上设置了一台 Windows 2012 R2 机器,在其上安装了 Autoit,并编写了启动 GUI 程序并在其上执行操作的脚本(我们称此脚本为 auto.au3)。
我运行 这个脚本从Windows 命令行向它传递一个参数,并且它工作得很好。问题是我需要从 Jenkins 启动它,当我通过作业调用 auto.au3 时,脚本似乎无法打开 GUI 程序。
我在 Windows 上将 Jenkins 配置为从站(所以我从我的 "main" Jenkins 调用它),启用 "allow service to interact with the desktop",我将 Autoit 安装目录作为 PATH 环境变量添加到Jenkins 和我在 Jenkins 中编写了批处理命令(直接在 Windows 上运行)。看起来像这样(%domain% 是一个 jenkins 构建参数):
SET PATH=%PATH%;%AUTOIT_PATH%
AutoIt3 C:\Users\Administrator\Desktop\auto.au3 param1 "%domain%"
auto.au3 的第一步是:
Run("C:\Program Files (x86)\GUIprogram.exe")
从 Windows 执行时工作正常,但从 Jenkins 启动时无法打开程序并且作业卡住了。
我还尝试创建一个 python 脚本,运行s auto.au3 脚本来检查错误是否在 PATH 环境变量中,但我检查 python 工作正常直到 运行s auto.au3,然后它也卡在了第一步。同样,只有当我从 Jenkins 调用它时才会发生。如果我在机器上登录并直接 运行 执行批处理命令,它就可以工作。
是否有一些限制可以避免通过 Jenkins 启动 GUI 程序?我是否错过了一些允许它的配置?
非常感谢!
--编辑------
我启动了应用程序并删除了 "launch app" 代码行,但它仍然没有任何反应。 auto.au3 似乎什么都没做。
好的,经过多次调查,我发现问题出在奴隶 Jenkins 的启动方式上。我在这个 Whosebug 问题回复中找到了解决方案:
这个问题并没有真正相关,但 Jason Swager 的回复解决了这个问题。