求助:RFT录制的脚本无法回放!
录制的流程大致如下:1.在A页面点击放大镜button(如图),弹出work directory 窗口。
2.输入last name 和 first name,点击Search button, Search 出结果
3.选择查出的结果,点击 submit button, 则关闭当前窗口,返回页面A,并带回选择的结果
具体流程见图
回放的时候,只能回放到输入last name, 之后的都无法回放, 提示的错误是:Exception occurred during playback of script Found 3 instances of the same test object.This often happens when multiple instances of the application are running.</b><;P>Details: Looking for BrowserTestObject(Name: <b>browser_htmlBrowser</b>, Map: htmlBrowser).<;P>First object: recognition score:0, description: {screenRectangle=java.awt.Rectangle, .title=Workforce Directory, .url=http://3msourcereg.mmm.com/wps/portal/3M/en_US/Workforce-Directory/Results/?returnToURL=http://externaltest6.3m.com:80/ewsadmin/workforceInfo.htm?method=select&selectionMode=single&inactive=false&soloMode=true}</P><;P>Second object: recognition score:0, description: {screenRectangle=java.awt.Rectangle, .title=Workforce Directory, .url=http://3msourcereg.mmm.com/wps/portal/3M/en_US/Workforce-Directory/Results/?returnToURL=http://externaltest6.3m.com:80/ewsadmin/workforceInfo.htm?method=select&selectionMode=single&inactive=false&soloMode=true}</P></P>..]. 有哪位高手知道这种问题如何解决吗?为什么会出现这种问题啊? 已经被这种问题困惑了好久了, 期待高手的指点。 十分感谢啊! 错误信息的提示是在页面中出现了三个符合测试对象描述的页面元素,脚本不知道执行哪个对象;
我记得RFT里有提供索引的方法,让你指定要操作第几个对象,楼主查一下API吧。你用的是录制的方式来生成脚本,我录制用得少,就不再多说了。 既然是找到了3个对象,RFT当然就不知道该点哪一个咯,所以需要为几个Search按钮再加上几个识别属性,可在对象映射地图中更新一下Search按钮的识别属性。(异常com.rational.test.ft.AmbiguousRecognitionException在识别不准确或者对象存在二义性便会抛出)
另外还有一种方法,使用Find动态识别然后返回对象数组中的一个即可,你可以先自己试试,我在连载教程中也会具体再讲解find的用法。
回复 4# 的帖子
我按照第一种方法修改了控件的属性,运行的时候,就会提示控件找不到(如图),使用 Find the object 选项重新抓取后,边可以继续下去。是我修改的方法有问题吗?非常期待您的解答,谢谢!
附:我修改的方法
在ObjectMap 中双击 FirstName 控件,它的详细信息便会显示出来,我直接更改它的 .name属性,然后保存。
[ 本帖最后由 张敏-lisa 于 2010-3-17 17:13 编辑 ] sleep几秒看看呢,另外这几个Search的按钮.name属性都不一样吗
回复 6# 的帖子
是的,这几个name的属性都不一样的。今天我试了一下你说的第二种find方法,发现一个很奇怪的问题。我用这种方法查找IE页面中(就我在 1# 提供的截图中的A页面)中的object可以找到,但是在work directory 这个页面就找不到 。work directory 应该是用JS代码直接弹出来的一个窗口,可能跟A页面这种窗口有不同吧!我也不知道为什么? 请问下是不是RFT 不能识别这种窗体里的控件啊? 还有没有别的办法解决? 使用find的时候注意atDescendant和atChild的区别,对对话框里的控件找不到是不是因为层次关系的问题。(使用atDescendant才可递归查找)回复 8# 的帖子
经过几天的研究和各位的帮助,问题总算有了很大的突破。非常感谢强子老师!原因是点击button 的时候弹出work Directory页面,但是不知道为什么会有两个甚至多个work Directory页面在运行。所以解决的方法就是用find 方法找到work Directory这个document,返回其中的一个, 然后在document 中 使用 parent.find 方法找出这个页面的控件就行了。
但是我有遇到了另外一个问题,就是找不到radio button. 在work Directory页面输入lastName 和firstName,点击Search button,就会显示出Search结果,每条记录前会有一个radio button.同时这个页面上还会显示出【Submit】 button。但是这个是时候在work Directory这个docoument中就找不到这些控件了(radio button 和submit button)。请问这个问题如何解决啊?
[ 本帖最后由 张敏-lisa 于 2010-3-22 14:04 编辑 ]
atDescendant 和atChild的区别
原帖由 dennyqiang 于 2010-3-20 22:43 发表 http://bbs.51testing.com/images/common/back.gif使用find的时候注意atDescendant和atChild的区别,对对话框里的控件找不到是不是因为层次关系的问题。(使用atDescendant才可递归查找)
您好:请问他们的区别是什么? 大家好,我使用RFT也用到了类似的问题,找了N种原因还是没有解决, ,我的MSNfxy860709@hotmail.com,QQ 494964682 希望使用这些的同鞋们大家共同探讨。。。。。。。。。 回复 10# lengchun10
区别是
atChild找的是直接子集。
atDescendant找的是所有的子集。
换句话说,爷爷辈的,用atChild找到的就是爸爸,妈妈辈的,找不到你这里来,要想从爷爷那直接找到你这里,就得用atDescendant 应该是输入firstname时找到了3个相同类型的TestObject:
1,如果3个类型相同的TestObject存在唯一标识(如id),果断find方法动态识别
2,如果3个类型相同的TestObject的无唯一标识,但父节点是唯一的,那就可以先找到父节点,再循环该父节点找目标控件
页:
[1]