自动化工具 windows 客户端锁屏 GUI 自动化问题

nonevx · 2019年08月15日 · 最后由 花落去 回复于 2019年09月18日 · 3941 次阅读

在 Windows 电脑锁屏的情况下, 想让 PC 客户端 GUI 自动化程序正常执行, 可能吗

共收到 7 条回复 时间 点赞

看你用啥工具了,据说我知,QTP 在锁屏的情况下旧无法使用模拟键盘和鼠标了,因为 system lock 的同时,这两项都被禁用了。

杨腾 回复

是 AutoIT, 模拟发送 Windows 消息, 但是也不可以, 不知道是方法问题还是就不能实现

nonevx 回复

这个就不太懂了。。其实,为啥锁屏咧,把屏幕关掉不要触发 system lock 的操作应该就好了。

模拟输入键值或移动鼠标这些是不行的

首先锁屏之后是无法进行自动化屏幕操作的,包括远程桌面最小化之后也是不行的。但是可以通过另一种方法来绕过这个限制来实现。

首先如果你那边机器很多,可以让出一台专门做 RDP Connect 的机器用来连接所有需要进行自动化测试的机器,在运行自动化之前通过 Jenkins 之类的打开一个 RDP 连接到目标机器。

如果你那边只有一台机器的话,也可以通过 RDP Loop 实现,一台机器创建两个账号,用其中的一个账号 RDP 登陆到同台机器的另一个账号,这样可以实现 RDP 持久化,说白了就是一台机器创建两个账号自己 RDP 到自己,当然需要通过一些设置(multiple rdp)来实现。

下面是我们这边实现这个功能的 Guide 供你参考。

  1. In Same VM, two different account, create Jenkins slave

  2. Enable multiple RDP follow guide
    https://www.serverwatch.com/server-tutorials/how-to-enable-concurrent-remote-desktop-sessions-in-windows.html

  3. In slave 1 account 1
    Configure job run following bat:

START taskkill /im mstsc.exe /f /t
del c:\mstsc.txt
Start /b "" "C:\RDP\rdp.exe" /v:%machine_name% /domain:%domain% /u:%user_name% /p:%password% /fullscreen /w:1920 /h:1200
ping 1.1.1.1 -n 1 -w %delay%
tasklist | find "mstsc.exe" >> c:\mstsc.txt
if exist c:\mstsc.txt exit 0 else exit 1

我们这边所有的桌面程序自动化(.net 程序, 桌面程序 包含 web 之类混合应用等的通吃)都通过以上方法实现了,实测公司内网基本上不会断,跑几十个小时都没问题。

nonevx 关闭了讨论 08月22日 10:01
nonevx 重新开启了讨论 08月22日 10:01

用 VM 虚拟机执行自动化用例,实体机随便锁屏就没影响了

@%windir%\System32\tscon.exe 0 /dest:console
@%windir%\System32\tscon.exe 1 /dest:console
@%windir%\System32\tscon.exe 2 /dest:console

把这个保存成一个 bat 文件,断开连接的时候执行一下

nonevx 关闭了讨论 09月23日 13:14
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册