UIAutomation作为SendKeys的替代品 - 处理弹出窗口

时间:2014-08-24 10:29:15

标签: delphi ui-automation

我只是把我的脚趾插入UIAutomation,作为通常SendKeys的替代品,用于从我在D7中编写的测试台向另一个应用程序发送击键。

Fwiw,我不确定这是否是正确的术语,但据我所知,目标应用程序并未主动“支持”UIAutomation,因为Adobe Acrobat确实如此:我的意思是当您通过UIAutomation查询Acrobat时,它会检测到您并弹出一系列对话框,以帮助设置其辅助功能。我的目标应用程序似乎不是那种“UIAutomation-aware”。无论如何...

我被困在我挑起目标应用程序的位置,弹出一个用于数据输入的模态对话框。此弹出窗口似乎无法通过目标的UIAutomation树访问。 OTOH,我可以通过EnumWindows轻松找到它的窗口句柄。因此,我可以检索弹出窗口的UIAutomation树,并使用它来填写它所要求的数据,我想。

然而,这是我的q的实质,我想知道我是否错过了通过递归检查目标应用程序的UIAutomation树的树元素而无法找到弹出对话框的技巧,或者是否需要跳到另一棵树来填充弹出对话框只是UIAutomation范例的一部分? (UIAutomation框架似乎不太可能“知道”应用程序和弹出窗口是相关的,但我想我会检查。)

如果它感兴趣,我的情况下的目标应用程序实际上是D7 IDE本身,虽然它可能是XE4或XE6,我也有。我这样做是为了看看我是否可以为另一个SO问题设计答案。如果德尔福通过自动化界面展示其OTA服务,那么OP在5分钟内就可以实现这一点 - 看起来奇怪的是,将自动化界面组合在一起的最佳工具并不具备自己的优势。我想知道为什么不呢?我想在这里可能会有人反对这个问题,尽管这里的一些贡献者能够知道答案而不仅仅是推测。也许我会在他们回来的时候询问EMB NG。

**更新:我刚刚注意到在D5开发人员指南的OTA章节中提到了“[OTA]接口可以被任何支持COM的编程语言使用”。我想知道他们是否意味着,来自外部应用程序?

0 个答案:

没有答案