【发布时间】:2017-11-06 12:45:51
【问题描述】:
我一直在使用 pywinauto 打开命令提示符 (Mingw-64) 并使用 type_keys
传递命令它在我的本地系统中正常工作,但是当我将代码托管到 RDP 服务器时,当 RDP 处于最小化状态时,我无法恢复窗口并传递命令
请给我一个合适的解决方案,让我知道是否有任何包有同样的目的。
谢谢!
【问题讨论】:
标签: python-2.7 pywinauto
我一直在使用 pywinauto 打开命令提示符 (Mingw-64) 并使用 type_keys
传递命令它在我的本地系统中正常工作,但是当我将代码托管到 RDP 服务器时,当 RDP 处于最小化状态时,我无法恢复窗口并传递命令
请给我一个合适的解决方案,让我知道是否有任何包有同样的目的。
谢谢!
【问题讨论】:
标签: python-2.7 pywinauto
有几点需要改进。
最好使用标准 Python 模块 subprocess 和标准输入重定向来与命令行应用程序通信。我强烈推荐您使用这种可以抵抗 RDP 最小化的方式。
RDP 不提供处于最小化状态的 GUI 上下文(任何 GUI 自动化工具都会在此处放弃)。要解决此问题,只需将 RDP 从全屏模式切换到恢复的窗口状态(非最小化!),在 RDP 窗口内运行 GUI 自动化脚本并快速切换到本地计算机(到另一个窗口)并继续工作而不影响自动化脚本。只是永远不要最小化 RDP。如果您很少这样做,这是一个手动快速破解。
要自动化的第三件事是使用命令 psexec 和键 -i(交互式)。通过这种方式,您可以使用 GUI 上下文自动运行远程命令,而无需手动修改。只需找到并下载 PsexecTools(推荐)或学习 Power Shell 的类似命令。
要完全消除此问题,只需使用 TightVNC 等 VNC 服务器软件,而不是 RDP。如果您至少使用过一次 RDP,则必须重新启动远程计算机。另一个可能的陷阱是 VNC 显示不是虚拟的(如 RDP 会话),因此它需要为您的视频卡提供相关的显示驱动程序。否则您可能会遇到黑屏或小分辨率。 VNC 的一大优点即使您与当前会话断开连接(即在回家前关闭笔记本电脑),它也会保留 GUI 上下文。
【讨论】:
可以在这里找到有用的答案:https://support.smartbear.com/testcomplete/docs/testing-with/running/via-rdp/in-minimized-window.html
并且必须这样做才能在无效的情况下断开与 RDP 的连接:
要断开与远程桌面的连接,请在远程桌面上运行以下命令 以管理员身份远程计算机(在远程桌面窗口中):
%windir%\System32\tscon.exe RDP-Tcp#NNN /dest:console
其中 RDP-Tcp#NNN 是您当前远程桌面会话的 ID, 例如,RDP-Tcp#0。您可以在 Windows 任务管理器中看到它 会话列中的用户选项卡。
您将看到“您的远程桌面会话已结束”消息,并且 远程桌面客户端将关闭。但是所有程序和测试 远程计算机将继续正常运行。
【讨论】: