51Testing软件测试论坛

标题: 脚本代码如何实现:不管上层菜单如何变化,总能选中最下层菜单 [打印本页]

作者: ylm77ojn    时间: 2008-7-16 10:17
标题: 脚本代码如何实现:不管上层菜单如何变化,总能选中最下层菜单
脚本如下:
Browser("首页").Page("首页_2").WebElement("系统菜单").Click
wait(5)
Browser("首页").Page("首页_2").Image("s").Click
wait(5)
Browser("首页").Page("首页_2").Image("s_2").Click
wait(5)
Browser("首页").Page("首页_2").Image("s_3").Click
wait(5)
Browser("首页").Page("首页_2").Link("按群组授权").Click
Browser("首页").Page("首页_2").WebElement("WebElement_2").Click
Browser("首页").Page("首页_2").WebButton("授权").Click

其中脚本Browser("首页").Page("首页_2").Image("s").Click表示展现根菜单
录制脚本时为点击根菜单前面的+号,是个image对象
Browser("首页").Page("首页_2").Image("s_2").Click为打开下一级菜单
...
按群组授权是最下层菜单
脚本代码如何实现,能直接选中按群组授权这个link
因为它的上级菜单可以增加个,也可以减少个,一旦增加或减少后,那下次再回放这段脚本就出错了的,因为那些image对象,s,s_2,s_3就变化了的
作者: zte_boy    时间: 2008-7-16 10:42
Function menuSelect(menuName)
        Set curPage=Browser("creationtime:=0").Page("index:=0")
        menu=split(menuName,"-")
        curPage.WebElement("innerhtml:="&menu(0)).Click
For i= 1 to UBound(menu)
        Set menuDesc = description.Create()
        menuDesc("text").Value=menu(i)
        menuDesc("micclass").Value = "Link"
        if curPage.Exist(1) then
                label = 0
                While(label = 0)
                        Set menuLists = curPage.ChildObjects(menuDesc)        
                        NumberOfLists = menuLists.Count()
                        If NumberOfLists=1 Then
                                menu(i)=menuLists.Item(0).GetROProperty("html id")
                                label = label + 1
                        elseif NumberOfLists>1 then
                                For j=0 to NumberOfLists
                                        tempText=menuLists.Item(j).GetROProperty("html id")
                                        If instr(tempText,menu(i-1))>0 Then
                                                menu(i)=tempText
                                                label = label + 1
                                                Exit For
                                        End If
                                Next               
                        End If
                Wend
                curPage.Link("html id:="&menu(i)).Click
        end if
        Set menuLists = nothing
        Set menuDesc = nothing
Next
        Set curPage = nothing
End function
菜单格式为:一级—二级—三级 等
你只要把最下级的菜单路径输入进去就可以了
作者: ylm77ojn    时间: 2008-7-16 15:22
标题: 回复 2# 的帖子
代码这样写的:
Dim menuName
menuName="按群组授权"

        Set curPage=Browser("首页").Page("首页_2")
        menu=split(menuName,"-")
        curPage.WebElement("innerhtml:="&menu(0)).Click
For i= 1 to UBound(menu)
        Set menuDesc = description.Create()
        menuDesc("text").Value=menu(i)
        menuDesc("micclass").Value = "Link"
        if curPage.Exist(1) then
                label = 0
                While(label = 0)
                        Set menuLists = curPage.ChildObjects(menuDesc)         
                        NumberOfLists = menuLists.Count()
                        If NumberOfLists=1 Then
                                menu(i)=menuLists.Item(0).GetROProperty("html id")
                                label = label + 1
                        elseif NumberOfLists>1 then
                                For j=0 to NumberOfLists
                                        tempText=menuLists.Item(j).GetROProperty("html id")
                                        If instr(tempText,menu(i-1))>0 Then
                                                menu(i)=tempText
                                                label = label + 1
                                                Exit For
                                        End If
                                Next               
                        End If
                Wend
                curPage.Link("html id:="&menu(i)).Click
        end if
        Set menuLists = nothing
        Set menuDesc = nothing
Next
        Set curPage = nothing


刚才尝试了下,好像不行,我的页面是这样的
首先打开一个下拉框,点击系统菜单
页面出现3个根菜单:系统管理控制台,即席查询系统,内容管理系统
点击根菜单:系统管理控制台,一级菜单打开,再点击其下面的子菜单:统一权限管理,二级菜单打开
最后再点击按群组授权这第三级菜单,选中
作者: zte_boy    时间: 2008-7-16 16:29
标题: 回复 3# 的帖子
既然是多级,为什么写成menuName="按群组授权"?
应该是“系统管理控制台-统一权限管理-按群组授权”
作者: ylm77ojn    时间: 2008-7-16 16:56
标题: 回复 4# 的帖子
现在设置了menuName="系统管理控制台-统一权限管理-按群组授权"
但是代码运行到while语句时,一直在运行,感觉是个死循环
我debug代码时跑到那也是不断的在跑while语句
[attach]44034[/attach]
[attach]44033[/attach]

[ 本帖最后由 ylm77ojn 于 2008-7-16 17:05 编辑 ]
作者: zte_boy    时间: 2008-7-16 17:21
在我的web系统里是正常的,你可以根据自己需求改动,应该是没问题的
作者: ylm77ojn    时间: 2008-7-16 22:07
标题: 回复 6# 的帖子
不太明白你代码中这句curPage.WebElement("innerhtml:="&menu(0)).Click在系统中是什么操作
curPage.Link("html id:="&menu(i)).Click又是什么操作
  menuDesc("text").Value=menu(i)
        menuDesc("micclass").Value = "Link"
menu(i)=menuLists.Item(0).GetROProperty("html id")
  tempText=menuLists.Item(j).GetROProperty("html id")
这上面4句也不是很明白




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2