51Testing软件测试论坛

标题: About Descriptive Programming [打印本页]

作者: alex_82712    时间: 2007-4-17 11:53
标题: About Descriptive Programming
向各路高手请教:
我写了一个系统的登陆到退出的描述行编程,但是最后一句click "Log out" link,执行不通过
把代码和提示信息都弄上来,大家帮我解决一下,谢谢。

1:   browser("name:=BugTest1.0").page("title:=BugTest1.0").webedit("name:=username","type:=text").Set "XXXXXX"
2:   browser("name:=BugTest1.0").page("title:=BugTest1.0").webedit("name:=password","type:=password").SetSecure "XXXXXX"
3:   browser("name:=BugTest1.0").page("title:=BugTest1.0").webbutton("name:= Log In","type:=button").Click
4:   browser("name:=BugTest1.0").page("title:=BugTest1.0_2").link("text:=Log out","href:=http://192.168.16.1:8080/BugTest1.0/working/home/BugTestHomeAction.do?pwChangeFlag=true# ").Click

运行到第4行就很慢,然后就报错。

[ 本帖最后由 alex_82712 于 2007-4-17 12:01 编辑 ]
作者: danmy    时间: 2007-4-17 12:13
login以后,page的属性可能变化了,spy一下logout这页面的page属性看看
作者: alex_82712    时间: 2007-4-17 14:26
标题: 回复 #2 danmy 的帖子
谢谢,SPY后,确实Log out有些变化,多了3个空格,但是后面用“href:=XXX”,不行。用“height:=16”就可以通过,这些值是在spy里查的。

但是我有个问题,如果测试的系统没有开发完成,也就是说界面基本上都还没出来,怎么用工具来进行测试。
就算系统可能比较稳定了,控件的位置可能也会经常变化的,怎样才能知道“height”的值是多少了?
因为“Log out”是个link,在spy里查到的“type”是空的

帮忙解决一下
作者: alex_82712    时间: 2007-4-17 22:01
请教个问题

对于导航菜单,鼠标放在首个菜单,它的子菜单项才会显示(都是link菜单),这种情况,怎么样进行描述性编程
我录制了一下,它是一个WebElement对象

举个例子:
在导航栏,有一模块
Management,底下有很多个子功能

Management >> Staff Management >> Project Management >> Role Management 等等(这些都是link menu)

我要为Management >> Staff Management 做描述性编程,该怎样设计代码

我用Object Spy了一下,因为Management是一个首菜单名,我检查不到它底下的那些子功能的元素

帮帮忙解决一下

谢谢

[ 本帖最后由 alex_82712 于 2007-4-17 22:07 编辑 ]
作者: yzem99    时间: 2007-4-17 22:55
正则表达式也许可以解决logout text变化的issue,你可以试试。。。。
作者: mstiunicon    时间: 2007-4-18 08:28
.......
都不想回答了
Browser可以使用creationtime来识别
Page使用index:=0来识别,如果有frame的就另当别论了
link使用text属性来识别
菜单的描述,WebElement("innertext:=XXX"),如果是一级菜单的第一个,需要增加index:=1这个属性,其他的不需要这个属性来识别

[ 本帖最后由 mstiunicon 于 2007-4-18 08:29 编辑 ]
作者: alex_82712    时间: 2007-4-18 11:03
标题: 回复 #6 mstiunicon 的帖子
我是新手,请多包含。
我刚才按照你的意思加了一个index,代码如下:
browser("title:=BugTest1.0").page("title:=BugTest1.0").webelement("name:=Personal","innertext:=Add Information","index:=1").Click
解释一下
"name:=Personal"是一级菜单
"innertext:=Add Information"是它下面的第一个二级菜单
加了一个index
但是运行还是很慢,之后就报错。
我把附件带上,麻烦帮忙解决一下

[ 本帖最后由 alex_82712 于 2007-4-18 11:07 编辑 ]
作者: alex_82712    时间: 2007-4-18 11:06
请看附件
作者: mstiunicon    时间: 2007-4-18 15:15
标题: 回复 #7 alex_82712 的帖子
按照你的描述,大哥,你写错了阿
应该是先点击1级菜单,等2级菜单弹出后,再去点击2级菜单
'点击1级菜单,如果这个一级菜单是最左边或者最上边的菜单,才需要添加index:=1这个属性来辅助识别,否则是不需要的。
browser("title:=BugTest1.0").page("title:=BugTest1.0").webelement("innertext:=Personal","index:=1).click
'点击2级菜单,2级菜单如果没有名称重复的,也是不需要添加index属性来辅助识别的。
browser("title:=BugTest1.0").page("title:=BugTest1.0").webelement("innertext:=Add Information").click
如果这样还是不行,试试看要不要添加fireEvent事件。因为每个菜单的实现和展现方式都不一样,只能提供一些思路供参考。

不过看你的截图,应该是browser没有被识别出来,你再仔细查看一下Browser的属性吧。

[ 本帖最后由 mstiunicon 于 2007-4-18 15:16 编辑 ]
作者: alex_82712    时间: 2007-4-19 17:54
mstiunicon兄:
我是新手,请多包含。刚刚学着写描述行编程!
我跟你讲下我目前这个系统,导航栏都在页面的上面,现在给你截的这个图的菜单是这样的(由于涉及隐私,系统做了修改,请包含):
一级菜单:“Personal” 是没有link的,也就是说,用鼠标点击这个一级菜单是无效的,它的功能是鼠标放到“Personal” 这一块的位置,它的二级菜单才会显示出来,也就是图上显示的“Add Informatioin”, “Staff Management” 等等,二级菜单都是link,点击一个进入到一个新的界面。

我现在想用描述行编程写“Personal >> Add Information”这个功能,代码如下:(根据你提供的信息,已做了修改)
1:  browser("title:=ButTest1.0").page("title:=ButTest1.0").webelement("innertext:=Personal","index:=1").Click
2:  browser("title:=ButTest1.0").page("title:=ButTest1.0").webelement("innertext:=Add Information").Click

到了第二行就报错,报错信息也截下来了

请帮忙解决一下,谢谢。
作者: mstiunicon    时间: 2007-4-19 18:32
提示信息说,找到了多个对象。如果是第二行报的错,那么,请将第2行改成:
browser("title:=ButTest1.0").page("title:=ButTest1.0").webelement("innertext:=Add Information","index:=1").Click
作者: alex_82712    时间: 2007-4-20 10:17
标题: 回复 #11 mstiunicon 的帖子
谢谢,终于解决了
不过是这样的
第2行代码后面不能写webelement().Click,这样的话,后面的代码会报错,说是找不到第3行代码的元素
因为第2行是一级菜单下面的子菜单,它是一个链接
后来把第二行的webelement().Click改成link().Click就可以通过了
作者: caigua    时间: 2007-4-24 10:42
尽量用不变化的特征值进行描述,如果值会变化,就用正则表达式来描述其统一的规律




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