我正在测试一个程序,该程序在某个时刻启用了其关闭按钮,并在另一个方面禁用了一个。 uispy在两个方面都显示为“ iSenabled”,在第一点是“ true”的“ uiaverify”显示为“ true”,第二点是“ false”

后者是我可以在视觉上确认的真实性,从编程中,我得到的值与Uispy相同,并且我的测试案例失败了。

使用System.Windows.Automation;

树结构:“对话框”“ programName”“ title bar”“ programName”“”按钮“”“关闭”

有人知道会导致这一点吗? UIA是否验证使用与Uispy不同的库?

有帮助吗?

解决方案

UIA验证2.0使用在UIA 3.0更新中与Windows 7一起发布的较新的本机com UIA库(也可作为Vista和XP SP3的单独的Hotfix KB971513提供)。另一方面,我认为Uispy使用了原始的托管API。

我与托管库有间歇性问题 .isEnabled().invoke() 我能够通过迁移到com库来纠正的方法,这似乎比托管库更稳定和更快。

我不记得迁移过程的细节,但是基本上您需要生成一个Interop DLL,该Interop DLL将允许您的.NET应用程序调用本机UIA方法。然后,您可以选择创建自己的包装库,也可以使用下面提到的一个。

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

  • UI Automation com-to-.net适配器 - 早期尝试为COM API创建包装纸。我只是直接使用它遇到了麻烦,但是最初看看这很有帮助。还搜索一些有关该包装器开发人员制作的COM API的MSDN支持论坛文章。不幸的是,由于我的stackoverflow代表低(长时间潜伏,首次回答器),我无法链接到它们。

  • UIA验证源代码 - 您可以看到它们在源代码中具有uiacomwrapper,用于访问com界面。您还可以看一下该项目如何生产Interop DLL。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top