前段时间要测试批量发送多份邮件的功能,在使用QTP做此功能时,发现上传附件的对象无法捕捉到,上传附件的弹出框总是随机变化的,回放的时候取的值永远不唯一,在同事的帮助下,学到了如何解决对象无法record的解决方案,虽然这个问题还是没有解决,希望经验丰富的QTP使用者能帮助一起解决该问题
同时总结下QTP相关知识
在录制脚本中,通常在Record and Run Setting中选择”Record and run test on any open browser”
打开IE浏览器录制脚本
SystemUtil.Run "C:\Program Files\Internet Explorer\iexplore.exe","","C:\Documents and Settings\Administrator","open" |
将以上脚本修改为录制的url路径
SystemUtil.Run "C:\Program Files\Internet Explorer\iexplore.exe","www.126.com" |
Stop脚本后在添加发送邮件的脚本
在录制过程中,要先点击页面中其他位置,让鼠标定位页面位置
Browser("MercuryTours").Page("MercuryTours").Frame("info_2").Image("fma-gateway").Click |
碰到的问题:由于上传附件弹出框每次的框名都是随机的,在回放时总是报无法找到对象
解决方案
第一种解决方案:Stop脚本后,添加未录制上的对象,回放依然无法找到对象时,再在对象库中添加没有录制上的对象,在脚本中插入对象脚本
第二种解决方案:添加虚拟对象,在Tool->Virtual Object->New virtual object,添加虚拟对象后,在重新添加录制脚本
wait(3)
'Browser("MercuryTours").Page("MercuryTours").Frame("info").Image("findFlights").Click 34,9
'对以上脚本无法找到Continue button,把button识别成了Image,这时使用虚拟对象
Browser("MercuryTours_2").Page("Mercury Tours").Frame("info").Image("findFlights").VirtualButton("Continuebutton").Click
'Browser("MercuryTours").Page("Mercury Tours").Frame("info").Image("findFlights").Click 46,5
'对以上脚本无法找到Continue button,把button识别成了Image,这时使用虚拟对象wait(3)
Browser("MercuryTours_2").Page("Mercury Tours").Frame("info").Image("findFlights").VirtualButton("Continuebutton2").Click |
http://www.51testing.com/?uid-26649-action-viewspace-itemid-3512
第三种解决方案:在录制过程中使用low level recording,先定位页面位置,再模拟鼠标键盘的操作找到对象
wait(3)
Window("Windows Internet Explorer").WinObject("Internet Explorer_Server").Click 572,243
wait(3)
Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys"{TAB}" |