|
回复 19# 云层
你这里列举了多种类型的GUI元素和你采用的识别方法. 我顺便也全面总结一下, 对于QTP里使用到的GUI元素, 我采用的相应的识别方法,
1. 简单的对象
这种对象是指, 通过一个id或者name或者label或者attached text, 等等, 就可以识别出来. 这种对象包括menu, button, edit, list, radiobutton, checkbox, 等等.
通常来说, 对于一个软件产品的节目, 这种类型对象是占大多数的, 我个人经验是80%左右.
这种对象无论 是录制通过QTP自动添加到对象库, 或者通过DP来查找都很简单. 鉴于其有很强的规律性, 我倾向于用DP来做, 就像我前面所描述的FindButton这样的函数, 原因是减少了对象库操作这个步骤, 开发的时候感觉更流畅.
2. 需要通过更多 属性 来识别的对象
举个例子, 页面有一个Table, 没有id. 缺省情况下, 如果把这个table加入对象库, QTP会通过index来识别. 但是index并不是可靠的方式. 这个时候需要把识别方式改成"column names".
这种对象 通过DP反而更麻烦, 不如对象库操作直观, 方便. 所以, 我是把这种对象放入对象库.
3. 另外有些对象只能通过DP来查找, 或者用DP查找更好.
因为TO封装的属性是有限的, 所以如果一个对象只能通过native对象的属性才能识别, 那么只能有DP了.
比如一个用SWT(eclipse)开发的界面, 有一个editbox, 其"attached text"是空值, 但可以通过 native object的message属性来识别.
又比如, 我现在的一个web项目, 所有form里面的input都有对应的label(如果没有可以报bug ), 所以所有的input都可以通过
a. 根据inner text找到label
b. 根据label的for属性找到input的id
c. 根据input的id找到input
相对于input的id这种识别方式, 我认为通过label更直观, 代码的可读性更好. 所以我用了DP通过label查找对象. 如果你问我 "label和id, 谁更容易变化"? 我真不知道, 只能通过时间来检验, 不过有一点我能确定, 无论是id或者label, 新版本更替时变化的比例都会是很小的. |
|