• UI自动化关闭远程桌面连接,鼠标键盘失效的解决方案


    一、初识鼠标键盘失效问题

    当用户在一段时间内没有对Windows进行任何操作,Windwos会自动切换到锁屏模式(或屏保模式),甚至待机。
    对于普通用户来说,这样设置没问题,而且这也是官方推荐的设置。但如果这台电脑是IT开发人员用来进行自动化测试的机器,尤其是包含UI交互的测试(比如,用脚本操控鼠标来模拟点击一个按钮),这样设置就是错误的,因为退出桌面后,鼠标键盘会失效,UI自动化无法正常进行。
    解决这一问题思路很简单:保持计算机一直在桌面上。
    具体实施的方法如下:设置Windows的电源模式,让Windows不要自动锁屏和待机,同时去掉屏保。

    二、问题进阶


    UI自动化测试期间,执行测试的电脑几乎不能被其他人使用(因为鼠标、键盘等输入设备此时需要响应自动化测试脚本)。
    为了不影响工作我们通常会搭一台虚拟机,然后远程连接到虚拟机,在虚拟机里进行UI自动化测试。
    这种方式很常用,但存在一个问题:如果我们在测试过程中将远程桌面最小化或关闭远程桌面,那测试也会因为鼠标键盘失效而中断。

    三、问题成因


    最小化会让远程桌面的会话切换到无图形界面的模式,这自然就无法继续接收鼠标、键盘的指令。
    关闭远程桌面会让系统切换到登录Desktop的界面,而在登录Desktop的界面上没有我们打开的其他窗口,因此会导致UI自动化测试失败。

    四、初级解决方案

    1、远程连接上虚拟机,永不关闭,永不最小化
    2、如果远程连接的机器是物理机的话,直接打开物理机,启动测试,关闭屏幕。注意:不要远程登录本机器,否则参考方法1

    五、远程桌面最小化中断测试的解决办法(注:从机器A通过远程桌面连接机器B,则需要在机器A上修改注册表)

    1、运行regedit
    2、找到注册表项HKEY_CURRENT_USERSoftwareMicrosoftTerminalServer Client
    3、新建一个类型为DWORD的注册表项RemoteDesktop_SuppressWhenMinimized并设置值为2
    4、然后找到注册表项HKEY_CURRENT_USERSoftwareWow6432NodeMicrosoftTerminalServer Client
    5、新建一个类型为DWORD的注册表项RemoteDesktop_SuppressWhenMinimized并设置值为2
    6、关闭注册表编辑窗口并重启计算机

    注意:上述配置仅对当前用户生效,如果你想让新增的注册表项应用于所有用户的话,则需要在HKEY_LOCAL_MACHINE下新建对应的注册表项。

    六、关闭远程桌面中断测试的解决办法1


    1、我们之前通过点击x图标来关闭远程桌面会导致鼠标键盘失效,本方法的解题思路是用命令关闭远程桌面,同时保留连接。
    2、在远程桌面(被连接的电脑)中先执行 query session 来查看当前登录到的 session,(远程桌面的 sessionName 都以 rdp-tcp 开头)。
    3、以管理员身份打开命令行工具,并执行 "tscon rdp-tcp#71 /dest:console",其中 rdp-tcp#71 为SessionName,我们可以把rdp-tcp#71替换为对应的ID。
    4、该命令会关闭远程桌面的连接,然后把连接返回给远程的那台电脑(绕开登录过程)。
    5、这里的 console 也是一个 SessionName,而这个名字的意思并非是 C# 中 “控制台” 的意思,而是指带有输入输出设备的机器,一般直接登录电脑的会话就是 console。

     

    七、关闭远程桌面中断测试的解决办法2


    1、每次都打开cmd执行命令太麻烦了,我们可以把命令封装成bat文件,当需要关闭远程桌面并保留连接时以管理员身份执行即可。
    2、新建文本文件,将其重命名为Close_RDP.bat
    3、将下边六行代码拷贝进去
    @%windir%System32 scon.exe 0 /dest:console
    @%windir%System32 scon.exe 1 /dest:console
    @%windir%System32 scon.exe 2 /dest:console
    @%windir%System32 scon.exe 3 /dest:console
    @%windir%System32 scon.exe 4 /dest:console
    @%windir%System32 scon.exe 5 /dest:console

    当多个用户登录同一台计算机时,就会出现 Session ID 大于1的情况,比如远程桌面。
    .bat文件中有六行命令,在本例中实际起作用的是ID=4的那一条,由于你不能确定自己是第几个登录到远程桌面的,也就无法确定自己的SessionID,
    本例仅处理了0~5的SessionID,如果你进行远程连接时被分配的SessionID是6,那脚本就对你无效了,自己稍加修改即可。

    八、关闭远程桌面中断测试的解决办法3

    假设用于进行UI自动化测试的机器是虚拟机B,现在使用另一台虚拟机A作为中转。

    1、本机先连接虚拟机A
    2、然后再从虚拟机A连接到虚拟机B
    3、最后断开本机与虚拟机A的连接

    如果文章对您有帮助,请点赞、评论支持一下,谢谢!
    ————————————————
    版权声明:本文为CSDN博主「changuncle」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/xiaouncle/article/details/103035537

  • 相关阅读:
    Linux中的官方源、镜像源汇总
    提示"libc.so.6: version `GLIBC_2.14' not found"
    win8.1 安装msi软件出现 2503、2502
    平均负载(Load average)
    oracle 导入报错:field in data file exceeds maximum length
    一个命令的输出作为另外一个命令的输入
    Http 状态码
    Linux 命令总结
    ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的SID等错误解决方法
    轻松应对IDC机房带宽突然暴涨问题
  • 原文地址:https://www.cnblogs.com/baihuitestsoftware/p/15102165.html
Copyright © 2020-2023  润新知