|
这两天一直被一个问题困扰,同时希望您能够耐心的看完下面的描述,多谢!
实际场景:场景很简单,就是一个登录操作,当用户名为空时点击【登录】按钮,系统弹出个Dialog对话框提示“用户名不能为空”,而后点
击对话框中的【确定】按钮。
测试脚本设计:在登录操作后加入一个判断,判断这个Dialog对话框是否存在,如果存在,利用Reporter向报告中输入一个信息:“测试用例
执行成功,登录失败”,而后点击【确认】按钮。
遇到的问题:在判断Dialog是否存在的时候,QTP没有报错,只是在报告中说“Dialog对象不能被发现”。而后,我又换了一个思路,不做判断
直接点击Dialog对话框中确定按钮,结果造成QTP报错,截图如下,大意是说Dialog对象找不到。
代码如下:
Call login
Function login()
'关闭所有的IE窗口,避免出现问题
SystemUtil.CloseProcessByName "iexplore.exe"
'打开IE,进入站点
SystemUtil.Run "iexplore.exe"
Set browsDesc = description.create()
Set pageDesc = description.create()
Set curPage = Browser(browsDesc).Page(pageDesc)
curPage.Sync
Browser(browsDesc).Navigate "http://200.101.13.3:8080/DCSM"
curPage.Sync
Browser("title:=登录","name:=登录").Page("title:=登录").WebEdit("name:=username").Set ""
Browser("title:=登录","name:=登录").Page("title:=登录").WebEdit("name:=passwordshow").set "admin"
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
[ 本帖最后由 oicq997 于 2010-9-10 12:45 编辑 ] |
|