首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用FlaUI在远程计算机上运行UI测试,而不是RDP进入它呢?

如何使用FlaUI在远程计算机上运行UI测试,而不是RDP进入它呢?
EN

Stack Overflow用户
提问于 2019-01-10 20:23:34
回答 3查看 2.6K关注 0票数 9

我们有一些UI测试,它们使用FlaUI来自动化与windows的交互。

当我们在构建服务器上运行这些测试时,它们无法与UI交互,除非有人通过RDP连接。

我们从测试中得到的错误只是一个Could not send mouse input. ErrorCode: 5

机器被设置为在启动时登录用户,如果我们以该用户的身份登录到RDP会话并“观察”测试,那么它们运行正常,并可以与桌面进行交互。一旦我们断开了那个用户的连接,他们就不能再进行交互了。

我们正在通过NCrunch网格节点运行测试,使用NCrunch网格节点控制台应用程序,它在登录时启动(即它不是作为服务运行,这样它就可以与桌面进行交互)。

有什么方法可以让测试运行,这意味着我们不需要持续地观察它们吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-01-16 12:53:18

如果您模拟鼠标单击,必须有一个活动桌面会话(https://github.com/Roemer/FlaUI/wiki/FAQ#how-can-i-run-flaui-tests-on-a-build-serveragent)。

您有两个选项:没有鼠标单击的测试(使用UIA模式)或确保构建代理的活动桌面会话。如常见问题中所述,通过运行tscon 1 /dest:console确保会话在断开RDP连接后未关闭。

票数 6
EN

Stack Overflow用户

发布于 2019-01-19 14:07:15

据我所知,您可以在控件上调用事件,而不是用鼠标来模拟它们。当事件被注入时,情况就不同了。这不仅适用于TestStack.White适应,而且适用于大多数机器人框架。那么,使用鼠标背后的动机是什么?

当JQuery使用Javascript时,除其他外,它改变了项目引用的范式。但是,它还减少了编写代码、创建实用程序方法和更改的代码数量:

代码语言:javascript
复制
FindFirstChild(cf => cf.ByAutomationId("RedButton")).AsButton().Click();

对较短的事物,例如:

代码语言:javascript
复制
_.Find<Button>("RedButton").Click();

无意中,您删除了一个抽象层,使其更易读,运行速度更快,不依赖于屏幕分辨率或dpi等。

如果前面的操作不适用,我会尝试一件事--在虚拟机中运行NCrunch网格实现。我是说,从理论上讲,这是可行的。

票数 1
EN

Stack Overflow用户

发布于 2019-01-22 06:58:25

所以我做了这件事。我主要遵循这里的指令,但在用户登录TaskScheduler时也禁用了ServerManager。

公司的政策也防止机器不锁定,所以我们有一个powershell脚本,它每分钟按numlock两次,以防止桌面锁定。

当默认用户登录时,桌面太小也会出现问题,这也会阻止单击。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54136379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档