c# - 如何在没有实现任何模式的情况下操纵控件?

标签 c# .net-framework-version microsoft-ui-automation

我正在尝试通过 UIAutomation 为我们的项目实现自动化测试。但许多控件不是标准的,并且也没有为这些控件实现适当的模式。在这种情况下,我应该如何通过UIAutomation框架来操作控件?

例如,我们产品中的按钮是通过 Pane 实现的,并且调用的模式也没有实现。我应该如何点击该按钮? (为了避免在测试机上安装VS,我不想在Microsoft.VisiualStudio.TestTools.UITesting命名空间中使用Mouse.Click())有没有办法仅使用 UIAutomation 框架或 .net 框架中嵌入的其他东西来做到这一点?提前致谢! (如果实现了正确的模式,下面的代码将起作用。作为新用户,我无法发布屏幕截图供您引用,抱歉!)

object temp = null;
if (btnTest.TryGetCurrentPattern(InvokePattern.Pattern, out temp))
{
    InvokePattern btnTestPattern = temp as InvokePattern;
    btnTestPattern.Invoke();
}

最佳答案

未实现控制模式时交互的唯一方法是点击周围的东西。 我建议尝试以下操作以避免最大错误。

  1. 发送点击之前,请确保按钮的父级( Pane 或窗口设置为前台)
  2. 不要将点击发送到 AutomationElement 的一角,而是尝试将其发送到元素的中点,
  3. 另外,尝试先将鼠标悬停在元素上,等待 200 毫秒左右,然后发送点击,这样您就一定会看到执行。[相信我,这有助于调试并避免许多问题。]

关于c# - 如何在没有实现任何模式的情况下操纵控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14230985/

相关文章:

c# - 怀特如何处理已经运行的应用程序?

c# - SQL Server 2000 中的表差异

c# - 从 C 转换为 C#,还是制作 DLL?

C# Ctrl+F 有时不起作用

entity-framework - 目标框架 .NETStandard 1.4 的 Entity Framework 6.1.3 NuGet 安装失败

c# - WPF 中的 UI 自动化

c# - WPF 中的 ItemsControl 是否有一个好的解决方案,可以通过垂直拖放对其元素重新排序?

asp.net - 如何强制Azure上的Web应用程序与.net Framework 4.5.2一起使用?

visual-studio - 如何解决此错误 : Loading the include file 'EF.Utility.CS.ttinclude' returned a null or empty string

ui-automation - UIA:从控件类型名称(字符串)获取ControlType