UI Automation中查询子元素有两种方式,一种是通过TreeWalker类的GetFirstChild和GetLastChild方法,另一种是通过AutomationElement类的FindFirst和FirstAll方法,关于两者之间的性能问题,在MSDN的TreeWalker类说明中有这么一段话描述:“使用 TreeWalker 在 UI 自动化目录树中导航可能导致进程间调用,并且其效率不如使用 FindAll 或 FindFirst 方法来定位元素”。有效率上的区别,这点很关键,要知道在一个元素非常多的被测试应用程序上,有很大一部分的工作就在于定位元素,即查找元素,如果测试用例有成百上千条的时候,这两种查找元素的方式有一点效率上的差异,通过大数量级的测试用例运行后的累积效应,其测试所用总时间也会差异较大。下面通过具体的代码实现看看这两种方式效率上到底有多少差距:
说明:
1. 在如下的代码中采用Win7自带的计算器作为被测试对象,通过在依次在计算器上查询数字按钮0~9来计算出总共花费的寻找时间。
2. 本方法对TreeWalker的其他寻找元素方法,如GetParent、GetSibling