UIA的优势
UIA的优势非常明显,主要包括以下几点:
1. 适应不同类型的UI程序,包括Win32、WinForm、 WPF和Silverlight。由于WPF和Silverlight中的子窗口和控件并不是传统的HWND,所以Win32 API和MSAA无能为力。而UIA可以直接支持这两种程序。
2. 兼容传统的Win32和MSAA模式。 前面提到过,UIA技术的内部实现可以多样化。这一点在下一篇文章中会详细讨论。 UIA通过一项叫做UIA<->MSAA的桥技术, 针对传统程序,可以在内部实现中借用MSAA的接口和直接调用Win32 API。这样不需要对控件或者程序的既有实现做任何改动,就可以直接适用于UIA的新模式。
3. 新引入的TreeWalker、UIA Event、Pattern、 Property模式易于使用,贴合自动化测试。这些模式高度抽象了各种UI自动化测试的需求,同时又不和传统模式相冲突。比如执行点击按钮操作,传统方法要么模拟鼠标键盘操作,要么发送Windows Message,而Message还分为WM_COMMAND或者WM_BUTTONDOWN。 而通过UIA Pattern,统一归类于Invoke接口,这个接口对于测试者来说就统一了。无论是Win32、 WPF还是Silverlight按钮,都可以通过统一接口执行,从而把具体实现隔离开。同时, 调用者若希望继续沿用键盘鼠标模拟,仍旧可以通过SendKey加上UIA获取坐标的方法实现。而UIA Event和对UI元素支持条件化区域化搜索,更是极大简化了测试人员的工作。