在驱动GUI的端到端测试项目中,由于GUI自动化驱动程序会干扰桌面,因此在开发人员的工作站上运行测试很麻烦。它会移动鼠标,从我们想使用的应用程序中夺取焦点,并且在测试运行期间切换到另一个应用程序时可能会开始在错误的应用程序中输入文本。
在Linux上,我们通过在虚拟X服务器(xvfb或xnest)上运行被测试的应用程序来解决此问题。 使用xnest,我们可以观看测试运行但仍然在不受干扰的情况下使用真实桌面。
Windows是否有类似的解决方案?
在驱动GUI的端到端测试项目中,由于GUI自动化驱动程序会干扰桌面,因此在开发人员的工作站上运行测试很麻烦。它会移动鼠标,从我们想使用的应用程序中夺取焦点,并且在测试运行期间切换到另一个应用程序时可能会开始在错误的应用程序中输入文本。
在Linux上,我们通过在虚拟X服务器(xvfb或xnest)上运行被测试的应用程序来解决此问题。 使用xnest,我们可以观看测试运行但仍然在不受干扰的情况下使用真实桌面。
Windows是否有类似的解决方案?
您可以使用SysInternals软件包中的“桌面”应用程序。在一个桌面上运行UI测试,同时在另一个桌面上工作。
com.objogate.wl.win32.RunOnDesktop
。在某些时候,我可能会将其移植到C并将其变成普通的命令行.exe文件,或者将其转换为用于在屏幕外运行测试的Ant任务。我刚刚在我的Windows 10机器上尝试了多个桌面的方法。我正在运行Selenium Javascript测试。我在另一个桌面上启动了测试,并等待它打开浏览器,然后切换回到我的主桌面。但是在Chrome浏览器成为活动窗口的同一时刻,现在它实际上强制我返回到那个桌面 :-(
我想我会尝试RunProcess.exe或Nat的解决方案。