qtp中如何录制my97datepicker日历控件
我们使用QTP录制my97datepicker日历控件的操作时,会发现选择的时间没有识别到的问题,目前可以采用以下方法解决,以邮件查找为例:
1.使用QTP录制my97datepicker日历控件操作时,一般情况下的脚本是这样:
Browser("邮箱系统").Page("邮箱系统_2").Link("邮件查找").Click
Browser("邮箱系统").Page("邮箱系统_2").Frame("Frame").WebElement("WebTable").Click
Browser("邮箱系统").Page("邮箱系统_2").Frame("Frame").WebElement("WebTable_2").Click
Browser("邮箱系统").Page("邮箱系统_2").Frame("right").WebButton("查找").Click
注:上面的脚本中,我们查看对象的属性值,虽然都包含了选择的日期,但是回放的时候并没有把属性对应的值读出来
2.解决方法:
录制选择时间的操作前,修改QTP的设置,具体为:
Tools~Options~Web~Advances~Record settings,把关键的都勾选上(我尝试时只勾选倒数第二个便可成功,如果有问题,可以尝试把其它几项也勾选上),在录制完点击“查找”的操作后,再把前面的设置改回去,因为其它的操作是不需要这种特殊的设置的,而且我有试过在这种设置下录制全部操作时,会有一些问题。
具体如下:
Browser("邮箱系统").Page("邮箱系统_2").Link("邮件查找").Click
'停止录制,修改QTP设置,Tools~Options~Web~Advances~Record settings,把关键的都勾选上,继续录制
Browser("邮箱系统").Page("邮箱系统_2").Frame("Frame").WebElement("WebTable").Click
Browser("邮箱系统").Page("邮箱系统_2").Frame("Frame").WebElement("WebTable_2").Click
'没有修改QTP设置前,录制脚本时没有下面赋值的代码,而这句恰恰是很关键的,把上面两句注释掉也可以正常回放
注:这句脚本录制时,并不是在这个位置,是在Click“查找”的语句后面,其实在录制时是通过Click“查找”来获取这个时间的,如果不调换位置,回放时会报系统自带提示,我们实际所需要的也是获取时间的值,所以这边可以把这句调换到点击“查找”前面来
Browser("邮箱系统").Navigate "http://mail.zzy.cn/webmail/src/search.php?search_b_time=2010-01-04&search_e_time=2010-01-29&mailbox=INBOX&flag=all&where=TEXT&what=&submit1=%E6%9F%A5%E6%89%BE","right"
Browser("邮箱系统").Page("邮箱系统_2").Frame("right").WebButton("查找").Click
'下面这句是修改配置后,新增加的语句,其实没有多大用处,可以注释掉
'Browser("邮箱系统").Page("邮箱系统_2").Sync
'停止录制,把QTP设置改回去,Tools~Options~Web~Advances~Record settings,把之前修改的勾选还原状态,继续录制
Browser("邮箱系统").Page("邮箱系统_2").Frame("right_2").Link("ceshi共享文件").Click
Browser("邮箱系统").Page("邮箱系统_2").Frame("right_3").WebButton("返回").Click
'成功回放
注:其实很多Ajax操作或其他弹出式日历组件的操作无法录制到的问题都可以尝试这种方法
另外:
如果以上方法还是解决不了问题,那么在修改QTP设置时,也一起修改以下设置:Web Event Recording Configuration~Customer Settings~onkeydown和onmouseover都设置为Enabled
尝试看看
如果采用low-level录制方法也可以解决问题,不过没上面的方法好用,上面的方法中,时间可以参数化,实行动态获取时间