【发布时间】:2019-08-21 15:06:34
【问题描述】:
我正在尝试使用 WinApp 驱动程序 在 Visual Studio 2017 中自动执行扩展程序 (WPF) 的 UI,但在使用 Inspect 捕获元素时找不到 automation id .exe(Windows SDK)
Inspect.exe 检查时最初没有发现自动化 ID。所以我在 XAML 文件的自动化属性中设置了自动化 ID,并在 Visual Studio 中安装了新的 VSIX,但在捕获元素时上述设置的 ID 仍然不可见。
但是在我如上所述在 XAML 中设置 id/s 后尝试捕获 UI 对象后,使用检查元素工具,偶尔会出现自动化 id,但它不一致,我不能找出它始终不可用/不可见的原因。
我在某些情况下通过使用“FindElementByName”和“FindElementByClassName”取得了成功,但我的意图是使用自动化 id 来更准确地捕获元素。
下面是我设置 AutomationId 的 XAML 代码;
Button Content="Close" Width="80" Height="25" Margin="10,0,0,0" Visibility="{Binding abc}" Click="CloseButton_Click" AutomationProperties.AutomationId="BtnCloseExample"
下面是我设置 id 以在我的测试项目中捕获元素的代码行;
session.FindElementById("BtnCloseExample").Click(); Thread.Sleep(TimeSpan.FromSeconds(3));
我希望以一致的方式设置和获取自动化 ID,以便使用 FindElementById 或 xpath。遗憾的是,我也找不到与此问题相关的好文章。
请阐明并提供一些指导方针来完成这项任务。如果可能的话,如果有人可以发布自动化 wpf 应用程序的示例,那将是非常有价值的。
谢谢。
【问题讨论】:
-
我知道一些可能导致这些症状的事情。 1. 如果控件在代码(不是 XAML)中声明,您将没有可用的 Id,因为您在 XAML 中声明了它们。 2.确保您使用正确的窗口句柄,也许是错误的?您需要检查页面来源。请参阅“session.getPageSource()”,它是 XML。 3.由于某种未知原因,您对源代码所做的更改没有在您正在测试的程序中编译。
-
如果您正在寻找 winappdriver 资源,我对他们的Github 有很好的经验。
-
嗨@PixelPlex 谢谢你的想法。我今天会尝试一下,看看是否有相应的改进。干杯!
标签: c# wpf visual-studio inspect winappdriver