C# UIAutomation和远程桌面连接
我有一个在任意Windows应用程序上实现自动化的应用程序。我一直在用记事本测试它 在这个自动化过程中,我必须从代码中调用事件。我目前支持两种类型的事件,因为它们似乎是最常见的,并且 我使用一台我可以远程进入桌面的计算机来做测试。但这很奇怪。当我通过远程桌面连接到计算机时,应用程序工作正常。当我断开与计算机的连接时,ExpandCollapsePattern的代码停止工作(InvokePattern工作正常)。我有一个残疾手术例外 文档中说,只有当节点被标记为LeafNode时,才应该抛出此操作。是什么让远程桌面不同于我得到的InvalidOperationException 下面是我当前必须执行该事件的代码C# UIAutomation和远程桌面连接,c#,windows,remote-desktop,ui-automation,automated-tests,C#,Windows,Remote Desktop,Ui Automation,Automated Tests,我有一个在任意Windows应用程序上实现自动化的应用程序。我一直在用记事本测试它 在这个自动化过程中,我必须从代码中调用事件。我目前支持两种类型的事件,因为它们似乎是最常见的,并且 我使用一台我可以远程进入桌面的计算机来做测试。但这很奇怪。当我通过远程桌面连接到计算机时,应用程序工作正常。当我断开与计算机的连接时,ExpandCollapsePattern的代码停止工作(InvokePattern工作正常)。我有一个残疾手术例外 文档中说,只有当节点被标记为LeafNode时,才应该抛出此操作
ExpandCollapseState state =
patternMenu.Current.ExpandCollapseState;
if (state == ExpandCollapseState.Expanded)
patternMenu.Collapse();
else if (state == ExpandCollapseState.PartiallyExpanded ||
state == ExpandCollapseState.Collapsed)
patternMenu.Expand();
patternMenu是使用GetCurrentPattern从AutomationElement获取的ExpandCollapsePattern
当我打印该值时,ExpandCollapseState的当前值为“折叠”
编辑:有没有可能我知道为什么我投了反对票,这是一个多么糟糕的问题?我真的很困惑到底发生了什么,因为它似乎只有在远程桌面关闭时才会失败。如果这真是一个愚蠢的问题,我应该知道答案,我希望得到解释,然后投反对票
与桌面交互的进程不是Windows服务。这是一个应用程序,我在远程桌面进入计算机后启动。是因为我锁定了桌面吗
我正在使用Ubuntu上的“终端服务器客户端”登录Windows机器。按下此应用程序上的“关闭”按钮是否会导致桌面锁定?一般来说,您通常无法在非交互式桌面上运行UI Automation或类似功能。非交互式桌面在输入方面有各种限制:没有聚焦元素,无法发送输入,因此任何依赖这些元素的操作都将失败 一些功能,如发送windows消息,将正常工作。这里可能发生的事情是,InvokePattern功能作为消息在封面下实现,因此仍然有效;但扩展/崩溃可能是在输入方面实现的,这将失败 不清楚为什么在您的情况下,当您关闭客户机时它会失败(这部分是预期的),但是 当远程桌面锁定自身时,它似乎可以工作——在这两种情况下,它的行为是否会相同
(请注意,如果本地Ubuntu桌面锁定,只要客户端仍在运行,所有这些都应该正常工作。在这种情况下,远程客户端仍然是“交互式”的,因为它有一个连接到它的活动客户端,无论客户端本身是在交互式桌面上运行还是在非交互式桌面上运行,这些概念甚至可能不适用于o在另一个操作系统上运行的客户端!)当桌面锁定自身时,我认为它运行正常,但我错了。当桌面锁定自身时,最新的测试结果开始失败。我将开始设置VM以在中运行测试,而不是使用远程桌面。谢谢。