51Testing软件测试论坛

标题: 关于录制对象,在回放时位置变换后怎么获取录制时的对象 [打印本页]

作者: 1019    时间: 2010-3-29 11:02
标题: 关于录制对象,在回放时位置变换后怎么获取录制时的对象
关于录制对象,在回放时位置变换后怎么获取录制时的对象
如:流程是
      前提条件:新建考试( 这个可以同时建多个开成一个考试列表)
      录制脚本是打开考试-录入考试成绩-保存   
      
      录制时在考试列表中 选择其中一个考试点击“打开考试”(打开考试实际是个图片,并且所有的打开考试图片都叫webimage"打开考试",所有的考试名称都是 webelement“ 打开考试”) ,之后又添加了多个考试,录制时的那个打开考试已深沉到下面去了,回放时能够打开考试,但实际打开的并不是录制时的那个,这种情况该如何做?我怎么样才能获取到的是我录制时的那个考试呢?
      以下是脚本
Browser("系统").Page("系统").Image("inletLogo4").Click
Browser("系统").Page("系统").Frame("mainFrame").Image("打开考试").Click
Browser("系统").Page("系统").Link("成绩录入").Click
Browser("系统").Page("系统").Frame("leftFrame").WebElement("一年级").Click

另外WebElement("一年级")可能会出现多个,在回放时怎么样让他继续列表中其他的年级主,需要从数据库里读取吗?

[ 本帖最后由 1019 于 2010-3-29 11:04 编辑 ]
作者: shotstar    时间: 2010-3-29 11:23
1、打开考试这个图片因为后来添加了多个考试,导致页面上也有很多打开考试了。
这个问题你需要认真思考一下,不能简单的只修改image的index,因为以后可能还会添加。按你的描述,你需要打开的那个图片是否是最后一个打开考试图片?或者说你每次都需要打开最开始录制的那个
这时候可以考虑用下面这个方法
Set oDesc=Description.Create()
oDesc("micclass").value="Image"
oDesc("alt").value="打开考试"    '我忘记那个属性是不是这个了,如果不是请换成能识别的属性。
Set Lists=Browser("系统").Page("系统").Frame("mainFrame").ChildObjects(oDesc)
all=Lists.count    '得到总共的图片个数
上面的代码可以得到总共有多少个打开考试的图片,如果你能确定你需要的打开考试一直是最后一个或者最后几个(比如倒数第三个),那么可以用index:=all-1或index:=all-3(倒数第三个),这样以后即使再增加新的打开考试也能正常点击到你需要的那个了。
唯一我担心的问题就是当打开考试特别多的时候,你们的系统是否会增加翻页,把旧的放到后面去,这时候你如果还要点那个之前录制的就要重新设计了。。
2、WebElement("一年级")我没怎么看明白你想做什么,这句没看懂“在回放时怎么样让他继续列表中其他的年级主”
如果也是有很多个一年级,可以用和上面打开图片类似的方法去找,也是最好能确定一下需要对第几个一年级操作。

如果有不明白的欢迎继续沟通。
作者: 1019    时间: 2010-3-29 14:02
谢谢你的回答,我按你的方法试下看。对于你不明白的,是我描述没说清楚。
教师A登录,A教师可以录入多个年级的成绩,录制的时候仅选择了一个年级,年级在leftframe中显示(根据教师的操作范围所匹配的年级也是不一样的),rightframe中根据所选择的年级显示出所有的学生,并依次输入考试成绩
我在录制的时候是点击的第一个年级,那么如果我要依次把所有的年级的考试成绩都录完,则webelement("一年级")中的“一年级”这个参数是不固定的,我如何让它自动的录入完第一个年级的考试成绩后自动到下一个年级,直到所有年级的考试成绩都录入完成。
作者: shotstar    时间: 2010-3-29 14:14
额,这个实现起来比较麻烦。。。你对脚本要求的越灵活,就越要使用复杂的代码来实现。
1、简单的办法,重新录制其他年级的
2、如果你要把"一年级"作为一个参数,那么同样要使用描述性编程。
写个简单例子
stage="一年级"     '这里可能会从datatable或其他方式获取年级
Browser("系统").Page("系统").Frame("leftFrame").WebElement("innertext:=" & stage).Click
如果这个一年级不唯一,还需要考虑加上index去标识。

这样外面加个循环就可以了。虽然说起来很简单,实际处理起来还需要考虑全面一些。
比如可能要考虑每个年级录入成绩的方式和过程是否一致;还要对应好数据,不能在给二年级录入成绩的时候把三年级的录入进去了。

大体上想到这么多,希望对你有帮助。




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