1

我有一个我正在测试的程序,它的关闭按钮在某个时间点启用,在另一个点上禁用。UISpy 在两个点都显示“isEnabled”为“真” UIAVerify 在第一个点显示“isEnabled”为“真”,第二个点为“假”

后者是我可以直观地确认为真的,以编程方式我得到与 UISpy 相同的值并且我的测试用例失败了。

使用 System.Windows.Automation;

树结构:“对话框”“程序名称”“标题栏”“程序名称”“按钮”“关闭”

有谁知道可能导致这种情况的原因?UIA 验证是否使用与 UISpy 不同的库?

4

1 回答 1

1

UIA 验证 2.0 使用更新的本机 COM UIA 库,该库与 Windows 7 一起在 UIA 3.0 更新中发布(也可作为 Vista 和 XP SP3 的单独修补程序 KB971513)。另一方面,我认为 UISpy 使用原始托管 API。

我在托管库中遇到了间歇性问题.isEnabled().invoke()我可以通过迁移到 COM 库来纠正这些问题,这似乎比托管库更稳定、更快速。

我不记得迁移过程的细节,但基本上您需要生成一个互操作 DLL,它允许您的 .NET 应用程序调用本机 UIA 方法。然后,您可以选择创建自己的包装库,或者可能使用下面提到的其中之一。

我建议参考这些以帮助进行过渡:

  • UI 自动化 COM 到 .NET 适配器- 为 COM API 创建包装器的早期尝试。我在直接使用它时遇到了麻烦,但最初看一看很有帮助。还可以搜索一些 MSDN 支持论坛帖子,这些帖子是由这个包装器的开发人员制作的关于 COM API 的。不幸的是,由于我的 StackOverflow 代表(长期潜伏者,第一次回答者),我无法链接到他们。

  • UIA 验证源代码- 您可以看到他们的源代码中有一个 UIAComWrapper 用于访问 COM 接口。您还可以查看该项目,了解他们如何生成互操作 DLL。

于 2012-01-02T22:42:48.063 回答