我如何 运行 UI 在远程计算机上使用 FlaUI 进行测试,而不是 RDP 进入它?
How can I run UI tests with FlaUI on a remote machine whilst not RDP'd into it?
我们有一些 UI 测试使用 FlaUI 来自动与 windows UI.
交互
当我们 运行 在构建服务器上进行这些测试时,它们无法与 UI 交互,除非有人通过 RDP 连接。
我们从测试中得到的错误只是 Could not send mouse input. ErrorCode: 5
机器设置为在启动时登录用户,如果我们以该用户身份登录 RDP 会话并 'watch' 测试,那么它们 运行 可以并可以与桌面。一旦我们断开该用户的连接,他们就无法再次互动。
我们运行通过 NC运行ch 网格节点进行测试,使用 NC运行ch 网格节点控制台应用程序,该应用程序在登录时启动(即它不是 运行宁作为一项服务,因此它可以与桌面交互)。
有没有什么方法可以让测试 运行 让我们不必持续观察它们?
如果您模拟鼠标点击,则必须有一个活动的桌面会话 (https://github.com/Roemer/FlaUI/wiki/FAQ#how-can-i-run-flaui-tests-on-a-build-serveragent)。
您有两个选择:无需单击鼠标进行测试(使用 UIA 模式)或确保构建代理的桌面会话处于活动状态。如常见问题解答中所述,请确保通过 运行 tscon 1 /dest:console
断开 RDP 后会话未关闭
据我所知,您可以调用控件上的事件,而不是用鼠标模拟它们。它是不同的,因为事件被注入。这不仅适用于 TestStack.White 适配,而且适用于大多数机器人框架。那么使用鼠标背后的动机是什么?
当 JQuery 变为 Javascript 时,它改变了项目引用的范式。但它也减少了您需要编写的代码量,创建一个实用方法并更改:
FindFirstChild(cf => cf.ByAutomationId("RedButton")).AsButton().Click();
更短的内容,例如:
_.Find<Button>("RedButton").Click();
不经意间删除了一层抽象,使它们更具可读性,运行s 更快,不依赖于屏幕分辨率或 dpi 等
如果以前的方法不适用,我会尝试一件事 - 运行 虚拟机中的 NC运行ch 网格实现。我的意思是,理论上,它可以工作。
所以我完成了这项工作。主要是我遵循了说明 here 但我还禁用了 ServerManager 在用户登录 TaskScheduler 时启动。
公司政策也防止机器不锁定,所以我们有一个 powershell 脚本,每分钟按两次 numlock 以防止桌面锁定。
还存在默认用户登录时桌面太小的问题,这也阻止了点击。
我们有一些 UI 测试使用 FlaUI 来自动与 windows UI.
交互当我们 运行 在构建服务器上进行这些测试时,它们无法与 UI 交互,除非有人通过 RDP 连接。
我们从测试中得到的错误只是 Could not send mouse input. ErrorCode: 5
机器设置为在启动时登录用户,如果我们以该用户身份登录 RDP 会话并 'watch' 测试,那么它们 运行 可以并可以与桌面。一旦我们断开该用户的连接,他们就无法再次互动。
我们运行通过 NC运行ch 网格节点进行测试,使用 NC运行ch 网格节点控制台应用程序,该应用程序在登录时启动(即它不是 运行宁作为一项服务,因此它可以与桌面交互)。
有没有什么方法可以让测试 运行 让我们不必持续观察它们?
如果您模拟鼠标点击,则必须有一个活动的桌面会话 (https://github.com/Roemer/FlaUI/wiki/FAQ#how-can-i-run-flaui-tests-on-a-build-serveragent)。
您有两个选择:无需单击鼠标进行测试(使用 UIA 模式)或确保构建代理的桌面会话处于活动状态。如常见问题解答中所述,请确保通过 运行 tscon 1 /dest:console
据我所知,您可以调用控件上的事件,而不是用鼠标模拟它们。它是不同的,因为事件被注入。这不仅适用于 TestStack.White 适配,而且适用于大多数机器人框架。那么使用鼠标背后的动机是什么?
当 JQuery 变为 Javascript 时,它改变了项目引用的范式。但它也减少了您需要编写的代码量,创建一个实用方法并更改:
FindFirstChild(cf => cf.ByAutomationId("RedButton")).AsButton().Click();
更短的内容,例如:
_.Find<Button>("RedButton").Click();
不经意间删除了一层抽象,使它们更具可读性,运行s 更快,不依赖于屏幕分辨率或 dpi 等
如果以前的方法不适用,我会尝试一件事 - 运行 虚拟机中的 NC运行ch 网格实现。我的意思是,理论上,它可以工作。
所以我完成了这项工作。主要是我遵循了说明 here 但我还禁用了 ServerManager 在用户登录 TaskScheduler 时启动。
公司政策也防止机器不锁定,所以我们有一个 powershell 脚本,每分钟按两次 numlock 以防止桌面锁定。
还存在默认用户登录时桌面太小的问题,这也阻止了点击。