不要通过远程桌面自动化测试
最重要的是要知道Ranorex和其他自动软件一样,无法通过Remote Desktop窗口进行自动测试。因为它无法识别远程桌面中的控件,所有远程桌面里的内容仅仅被认为是一张大图而已。
使用远程桌面进行自动化测试的唯一方法就是基于坐标或者基于图片比对的自动化。Ranorex不推荐使用这种方法,因为哪怕是仅有的一点点变动就会导致你的测试失败。
为了保证你的自动测试在机器上能够成功的运行,你不得不在你要连接到的测试机上也安装上Ranorex工具。
不要关闭和最小化RDP窗口
当你关闭和最小化远程桌面窗口时,远程的桌面将会被锁定。这将导致界面空白/黑屏从而导致自动测试失败。因此,如果你使用远程桌面,你需要保证测试的时候远程桌面没有被关闭和最小化。
同时确保远程桌面的机器上屏幕保护程序是关闭的,因为屏幕保护程序也会导致远程桌面被锁定。
作为workaround,你可以用一台机器连接到其他远程桌面,并保持这些窗口打开,这台机器不做任何自动测试。当你的测试在那些远程桌面机器上运行的时候,你可以锁定当前这台机器。因为你本地机器桌面锁定,但是远程桌面的session还是会继续打开,你的测试会继续在远程的机器上运行。
除了RDP以外,你还可以使用VNC或者VMWare Romote Console这样的工具,因为他们即使被管理或者最小化,也不会锁定远程机器的桌面。
锁定远端桌面的一个方法是,禁止物理的鼠标和键盘。你可以设置Ranorex的Keyboard.Enabled和Mouse.Enabled属性来达到目的。请注意,如果你禁止了键盘和鼠标之后,它们只有在你重新解锁后才能被使用,否则你必须等到整个测试结束。
如果你想在这个测试中禁止输入,你可以在Program.cs文件中设置:
Keyboard.Enabled = false;
和
Mouse.Enabled = false;
但是,你需要再次注意,如果你设定他们同时为false,你就无法在不设置AbortKey的情况下终止测试。
所以你需要在Program.cs文件中同时设置:
Keyboard.AbortKey = System.Windows.Forms.Keys.Pause;
这样你就可以在某些不期望的事情发生后(死循环)可以终止测试。
你同样可以只在一个录制里面使用这项技术。这种情况下你可以在执行某些特殊操作的之前在用户代码中直接禁止键盘鼠标。而且,请别忘了再次将它们解锁,并且为其设置一个AbortKey。
使用相同的颜色和分辨率设定
如果你在远程机器上运行基于图片的自动测试和验证,你必须确保运行测试的机器和你当时建立测试/录制的机器上的颜色和分辨率一致。
并且,你需要保证应用了同样的windows scheme,因为如果你使用不同的windows scheme,你的待测应用可能会显示得不同。
在虚拟机上增加超时时间
和真机相比,在虚拟机上程序可能会运行的稍微慢些,因为多个虚拟机分享了同一个的物理主机资源。因此,在虚拟机上查找元素的时候可能需要花费更多的时间。你或许需要增加对象库中某些对象的查找超时时间,或者修改你的测试来检查你的待测应用的状态。建议你使用General Settings来为特定的测试修改超时时间。
禁止鼠标键盘事件的异步分发
在使用远程桌面连接上的远端机器上运行Ranorex工具有时可能会导致鼠标指针晃动。这种情况下可以在配置里面的general选项卡中禁止“Use asynchronous dispatching of mouse and keyboard events”。