Browser("creationtime:=0").Page("title:=登录").WebButton("name:=登 录").Click
'代码运行到这里的时候都是没有问题的。重点的是下面这句直接点击按钮这行代码。在此处QTP会报错,见截图。
Browser("creationtime:=0").Dialog("text:=Windows Internet Explorer").WinButton("text:=确定").Click
'下面是用来判断Dialog是否存在的,此处QTP不会直接报错,但在报告中提示“对象不能被发现”
If Browser("title:=登录","name:=登录").Dialog("text:=Windows Internet Explorer","creationtime:=0","location:=1").Exist Then
msgbox "success"
End If
End Function
原因分析:我一直怀疑是没有找对定位这个Dialog的属性。所以尝试使用了能够定位这个对话框的其他属性。例如:
location:=X,creation:=X,index:=X。结果还是一样的找不这个Dialog对象。
这个问题都困扰我好几天了。请大侠们经过的时候进来看看,帮小弟看看还有没有其他办法。在下感激涕零。
另外,因为不想依赖对象库,所以没有采用录制的方法制作脚本。还有,脚本中Browser用了两种方法描述对象,也是没有问题,可以通过的。
再有一个情况是:到后来我没办法了,直接录制个脚本,结果OK,没有问题,正常录制的脚本就能够识别这个Dialog。看脚本生成的情况,录制的脚本也是用text这个元素定位的啊,为啥轮到用描述性编程就识别不到了???
以下是录制的脚本:
Browser("登录").Page("登录").WebEdit("passwordshow").SetSecure "4c89b025e3c892ccef58"
Browser("登录").Page("登录").WebButton("登 录").Click
Browser("登录").Dialog("Microsoft Internet Explorer").WinButton("确定").Click '回放到这里也是能通过的。
Browser("登录").Page("登录").Sync
Browser("登录").Close