### QTP处理readonly控件 在自动化测试领域中,QTP(Quick Test Professional)是一款非常受欢迎的工具,它主要用于功能测试、回归测试等自动化测试任务。对于某些特定类型的控件,如只读(readonly)控件,QTP提供了多种方法来处理。本文将详细介绍如何在QTP中操作readonly控件,并特别关注日期控件的处理。 #### 1. 什么是只读(readonly)控件? 只读控件是指用户界面中那些不能被用户直接修改的输入字段。这类控件通常用于展示一些不允许更改的信息,例如订单号、计算结果等。在自动化测试过程中,处理这些只读控件时需要特别注意,因为直接通过用户界面进行操作往往是无效的。 #### 2. 处理只读控件的方法 QTP提供了一些方法来处理只读控件,下面介绍几种常用的方法: ##### 2.1 使用`clearAttributes`清除属性 一种常见的处理方式是首先清除只读控件的只读属性,然后再设置新的值。例如,对于一个WebEdit控件,可以使用以下代码: ```vbscript .WebEdit("textfield").Object.clearAttributes ``` 该行代码会清除文本字段的所有属性,包括只读属性。但这种方法可能会导致控件的状态变得不可预测,因此不建议频繁使用。 ##### 2.2 直接设置值 另一种方法是直接通过对象设置新值,这种方式适用于某些控件: ```vbscript .WebEdit("textfield").set "新值" ``` 然而,这种方法在某些情况下可能不起作用,特别是当控件设置了只读属性时。 ##### 2.3 修改为可编辑状态 更可靠的方法是在设置新值之前先将控件设置为可编辑状态,然后再设置新值,最后恢复原状。这种方式更加安全且有效,示例如下: ```vbscript Set obj = .WebEdit("textfield").Object If obj.ReadOnly Then obj.ReadOnly = False .WebEdit("textfield").set "新值" obj.ReadOnly = True Else .WebEdit("textfield").set "新值" End If ``` 这种方法首先检查控件是否为只读状态,如果是,则暂时将其设为可编辑状态,设置完新值后再恢复只读状态。这样既保证了自动化测试的顺利进行,又避免了对应用程序逻辑的干扰。 #### 3. 特别关注:日期控件 对于日期控件而言,处理只读属性尤为重要。因为这类控件往往涉及到日期选择器等复杂的交互机制,如果直接尝试修改其值,很可能会导致测试失败。因此,在处理日期控件时,建议采用上述第2.3节提到的方法,确保控件处于可编辑状态后再进行值的设置。 #### 4. 示例代码 下面是一段具体的示例代码,展示了如何在QTP中处理一个只读的WebEdit控件: ```vbscript ' 定义函数处理只读控件 Function common_set_readonlyedit(obj_input, mes_input) Set obj = obj_input.Object Dim old_set old_set = obj.ReadOnly If old_set = True Then obj.ReadOnly = False obj_input.set mes_input obj.ReadOnly = old_set Else obj_input.set mes_input End If End Function ``` 此函数接收两个参数:`obj_input`代表控件对象,`mes_input`代表要设置的新值。通过这个函数,可以有效地处理只读控件,使其在自动化测试中能够正确地接受新的输入值。 处理只读控件时需要采取适当的方法,确保控件能够在自动化测试中正常工作。特别是在处理日期控件时,更需谨慎操作,以确保测试的准确性和稳定性。
1、set 值之前调用clearAttributes把属性清掉.
.WebEdit("textfield").Object.clearAttributes
.WebEdit("textfield").set "设置的值"
2、直接使用对象的本身接口去赋值
.WebEdit("textfield").Object.value="设置的值"
3、修改目标编辑框的属性为readOnly=false,然后再执行set操作。 (开锁)
QTP脚本实例:
'*****************************************************************
'设计说明:修改对象readOnly属性,并赋值
'程序输入:obj_input-赋值对象,mes_input-值
'程序输出:无
'设计人员:sky
'设计时间:2012-10-30
'修改信息:无
'*****************************************************************
Function common_set_readonlyedit(obj_input,mes_input)
Set obj=obj_input.Object
old_set=obj.readOnly
if old_set=true then
obj.readOnly=false
obj_input.set mes_input
obj.readOnly=old_set
else
obj_input.set mes_input
end if
End Function
- 粉丝: 0
- 资源: 7
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助