我正在尝试实现一个自动化框架,我想在python中运行一个脚本,通过使用mac机器的ssh来启动windows .exe文件(例如记事本)。
我已经考虑过X11, openssh, fresh。
我可以运行python脚本,但由于我没有windows机器的GUI访问权限,我无法看到notepad正在启动。
此外,导出显示不是windows的选项。
如果有人能让我知道如何实现这个,我将非常感激。
提前感谢!
这就解决了我的问题:
https://superuser.com/questions/531787/starting-windows-gui-program-in-windows-through-cygwin-sshd-from-ssh-client谢谢你的回答!
基本上只是安装Cygwin SSH和使用屏幕检索GUI。即使是基于Pyro/RPyC的架构也会有所帮助。
一种选择是在OSX中使用Parallels,另一种选择是RDP (Windows版本的SSH + VNC)到服务器。
(我不清楚你到底想达到什么目的)
您可以使用自动热键来检测窗口是否存在。据我所知,你可以使用自动热键从python。我不能给出确切的链接如何使用AutoHotkey从python(我不熟悉python),但有大量的链接在谷歌,如果你搜索"AutoHotkey python"。下面是AutoHotkey代码,用于检测窗口是否存在,并在这种情况下执行一些代码。
Loop
{
SetTitleMatchMode, 2 ;sets to window's title can contain WinTitle anywhere inside it to be a match. So we can match Notepad Wintitle only with "Notepad". In that case we dont need Notepad exact Wintitle.
IfWinExist, Notepad
{
;Here should be any code that is executed if window exests.
}
Sleep, 1000 ; That command allows to check window every 1sec(1000 milliseconds). You can change that value or complitly remove that command.
}
始终使用自动热键http://ahkscript.org/(当前版本,新的官方网站)!AutoHotkey从autohotkey.com是过时的!
最可靠的解决方案可能是使用Jenkins。设置步骤相当简单:
- 在Mac上安装Jenkins服务器(在Linux上也可以正常工作)。
- 在你的Windows虚拟机上,安装Java并按照Jenkins文档描述如何设置Windows节点。
- 一旦Windows虚拟机连接到Jenkins服务器,尝试在Jenkins web UI中创建一个作业,看看服务器是否可以在Windows虚拟机上运行它。
- 一旦作业通过,就可以使用Jenkins远程访问API从另一个脚本(例如,从您提到的Linux主机)远程启动它。或者如果一个人要远程启动作业,他们可以简单地使用web UI。
重要提示:
根据测试中的应用程序的需要,您可能需要永久地让用户登录到Windows机器上(以便出现交互式桌面),并确保Jenkins代理在该用户会话中运行。这种设置在我过去测试Windows上的GUI应用程序并将结果报告给Linux主机时工作得很好。
Jenkins的优点是它很好地处理了将Windows应用程序的退出状态和文本输出传输回Jenkins服务器,这样服务器就可以在出现任何问题时通知你。当不使用Jenkins时,这种类型的系统可能非常脆弱且耗时。