Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UIAutomation和远程桌面连接_C#_Windows_Remote Desktop_Ui Automation_Automated Tests - Fatal编程技术网

C# UIAutomation和远程桌面连接

C# UIAutomation和远程桌面连接,c#,windows,remote-desktop,ui-automation,automated-tests,C#,Windows,Remote Desktop,Ui Automation,Automated Tests,我有一个在任意Windows应用程序上实现自动化的应用程序。我一直在用记事本测试它 在这个自动化过程中,我必须从代码中调用事件。我目前支持两种类型的事件,因为它们似乎是最常见的,并且 我使用一台我可以远程进入桌面的计算机来做测试。但这很奇怪。当我通过远程桌面连接到计算机时,应用程序工作正常。当我断开与计算机的连接时,ExpandCollapsePattern的代码停止工作(InvokePattern工作正常)。我有一个残疾手术例外 文档中说,只有当节点被标记为LeafNode时,才应该抛出此操作

我有一个在任意Windows应用程序上实现自动化的应用程序。我一直在用记事本测试它

在这个自动化过程中,我必须从代码中调用事件。我目前支持两种类型的事件,因为它们似乎是最常见的,并且

我使用一台我可以远程进入桌面的计算机来做测试。但这很奇怪。当我通过远程桌面连接到计算机时,应用程序工作正常。当我断开与计算机的连接时,ExpandCollapsePattern的代码停止工作(InvokePattern工作正常)。我有一个残疾手术例外

文档中说,只有当节点被标记为LeafNode时,才应该抛出此操作。是什么让远程桌面不同于我得到的InvalidOperationException

下面是我当前必须执行该事件的代码

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以在中运行测试,而不是使用远程桌面。谢谢。