UI自动化开发心得三

来源:互联网 发布:计算机编程入门 编辑:程序博客网 时间:2024/05/16 10:23

刚开始做UI自动化的时候我是这么理解它:

1.通过编程的方式操作鼠标和键盘的方式来操作应用程序;

 

2.应用程序包括IE浏览器,office办公软件或者其他类似的软件;

 

3.只要懂得如何用编程的方式操作鼠标和键盘,就能做UI自动化开发。

 

现在,发现这么几个问题:

1.编好了的程序,在同一个环境下运行10次,那么保证至少有一次会得到不一样的结果。

换句话说,相同的输入参数,却能得到不同的输出结果。

 

2.同一个程序在Vista和Win7两个环境下运行,也会有不同的结果。

 

3.衡量一个UI自动化程序的优劣,稳定性是第一个条件,其实是验证.

 

4.UI自动化的程序执行速度的快慢跟UI Automation Element 在UI Tree里面如何存贮有关系。可以通过一些查找的技巧来弥补这点。

一般情况下,如果UI执行速度比manul执行的速度还要慢很多,这种情况是不乐观的。

 

5.由于目前UI Automation Framework存在一些bug, 造成自动化测试失败的原因不是应用程序本身,而是UI automation framework本身的问题,所以在编程的时候需要注意一些问题,比如说在对一些UI element操作的时候,会发生UIElementNotAvailableException或者不发生异常,但UI Element的Click行为没有真实发生。 所以不得不先判断UI element.IsEnable是否为true,然后才能执行行为。

 

通过一段时间的接触,尝试解释下前2个问题,不见得对:

1>>需要从2部分讲,一个是ui automation是怎样叫鼠标听自己话的,另一个方面是当鼠标执行一个事件前后,window是handle一个UI元素的。  第一方面, ui automation首先是通过Wn32的API,以消息队列的方式调用windows 里的kernel对象来handle鼠标的。第二,在vista系统,展现一个UI 元素可能需要windows为其初始化,然后再渲染一下. 在这个过程中,这个UI元素从unavaliable态到available态,从unenable到enable态. 用户通过眼睛可以先看到这个元素(比如一个按钮),但实际上它还处于unenable状态. 如果UI automation程序这时候click它,那就惨了,一般都会抛出UIElementNotAvailableException异常. 这很让人郁闷.

 

2>>大概是Win7的渲染比Vista更高级,需要调用更多的东西,所以初始化一个按钮的绝对时间要比vista上的长. 经常发生在vista运行,程序能过,在win7上运行,就出现UIElementNotAvailableException. 即使是做了UI element的状态的检测,也时有发生这种情况。