本来以为不会再写TestComplete的系列文章了,没想到工作上又用到了,场景是这样的,先看下图:
001.jpg
这是一个测试工具叫做Clearquest,用于记录defect,在查询出结果后,导出列表,但是由于列表中的Description内容太长,不单无法显示完整内容,导出的文件中,该字段的内容也是不全的。找了半天,也没有找到设置方法。只好决定写个小工具来将每个defect的Description的内容贴出来,写进excel文件(这个内容此处不做讨论和讲解)。
首先描述一个普通操作者的行为模式:
1. 保证页面的初始状态,光标在第一页;
2. 点击列表中的第一条
3. 点击下面显示的Description
4. 按键ctrl+a和ctrl+c
5. 点击列表中的下一条
6. 点击下面显示的Description
7. 按键ctrl+a和ctrl+c
8. 当页操作完成后,点击右边的滚动条
9. 找到相应的记录,进行点击
这个行为模式有几个问题:
1. 如何判断什么时候该点击右边的滚动条
别跟我说当页完成就该点了,需要用技术语言来描述。
如果知道该表的总行数,还得知道当页的行数,你可以写死当页的行数,技术上是可以实现的
2. 如何确定点击哪一行
首先需要知道自己该点击哪行,这个有循环记数,应该知道的,到时候点就是了
3. 如何点击滚动条
别点击中间,要点击整个滚动条的最下端,如果数据多的话,这个最下端需要非常的精确,否则可能页面没有翻到最后一页。
4. 如何知道滚动条点击后,页面刷新完成
注意这是代码实现的,在人看来,点击滚动条后瞬间完成了,但是对于代码来说,很可能要点击相应的行的时候,该行还没有出现在页面上呢。需要设置多长的自动等待时间比较合适呢,这个可以估摸着来,设置长了,等待时间太多,设置短了,很快就会报错说找不到某某行,或者报错说某某行不在屏幕上
优化后的行为模式:
1. 保证页面的初始状态一致,光标停留在第一行;
2. 点击Result Set
3. 按向下的箭头
4. 点击下面显示的Description
5. 按键ctrl+a和ctrl+c
6. 点击Result Set
7. 按向下的箭头,直到结束
8. 点击下面显示的Description
9. 按键ctrl+a和ctrl+c
可以看到,这个行为模式更简单,避免了翻页滚动条的操作和行的定位与显示的匹配。
不过实际上,实现的时候仍然有问题需要注意,在粘贴出Description的内容后,不可以立刻用代码取出来,而是需要等待一下,具体时间跟粘贴出的内容大小有关,以我的这个情况,最长的也就三五百个字,有100毫秒就可以了,否则读取的时候系统粘贴板里面还没来得及写进去呢。
在自动化测试中,有几个地方需要考虑周到一些:
1. 能使用键盘尽可能减少鼠标操作;
2. 在操作完成后,下一个动作执行的前提条件是否能够迅速实现。经常出现的意外情况是,上一个操作完成了,页面进行自动刷新,在刷新的过程中,某个对象已经进入了内存,于是调用了点击动作,但是该对象还没有来得及在页面上显示出来,于是该点击动作是无效的,新的窗口没有弹出,于是报错,提示窗口找不到。比较狠的处理方式是在这个老是出问题的地方,别直接点击对象,看下该对象的VisibleOnScreen是否为True。要还有问题,试试改为SendKey(“[Enter]”);
3. 保持环境的干净,常见情况是QQ弹出来一个消息框,告诉你最新的新闻是啥,刚好挡住了操作的页面,回头又该提示你找不到什么对象了。
这个代码非常简单,就不附录了。