我一直在使用pywinauto打开命令提示符(Mingw-64)并使用 type_keys
传递命令它在我的本地系统中正常工作但是,当我将代码托管到RDP服务器时,当RDP处于最小化状态
请给我一个合适的解决方案,让我知道任何包装是否有相同的目的。
谢谢!
答案 0 :(得分:1)
有几点需要改进。
最好使用标准Python模块subprocess
和stdin重定向来与命令行应用程序通信。我强烈建议你采用这种方式来抵抗RDP最小化。
RDP在最小化状态下不提供GUI上下文(任何GUI自动化工具都会在这里放弃)。要解决此问题,只需将RDP从全屏模式切换到恢复窗口状态(非最小化!),在RDP窗口内运行GUI自动化脚本并快速切换到本地计算机(到另一个窗口)并继续工作而不影响自动化脚本。只是不要最小化RDP。如果您很少这样做,这是一个手动快速入侵。
自动化的第三件事是使用带有键psexec
的命令-i
(交互式)。这样,您可以自动运行带有GUI上下文的远程命令,而无需手动破解。只需找到并下载PsexecTools(推荐)或学习Power Shell的类似命令。
要消除这个问题,只需使用TightVNC等VNC服务器软件而不是RDP。如果您至少使用过一次RDP,则必须重新启动远程计算机。另一个可能的缺陷是VNC显示不是虚拟的(如RDP会话),因此它需要为您的视频卡提供相关的显示驱动程序。否则您可能面临黑屏或小分辨率。 VNC的最大优势即使您断开当前会话(即在回家前关闭笔记本电脑),它也能保持GUI上下文。
答案 1 :(得分:1)
可以在这里找到有用的答案: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任务管理器上看到它 “会话”列中的“用户”标签。
您将看到“您的远程桌面会话已结束”消息,并且 远程桌面客户端将关闭。但是所有的程序和测试 远程计算机将继续正常运行。