张敏-lisa 发表于 2010-3-11 15:31:19

请问如何抓取这样的对象?

如图所以,Create menu下有很多link,我想抓取的是Create Customer 这个menu,但是使用RFT抓取工具抓的话,只能抓取到 Create link. 怎么办?

谢谢各位高手指教! !!

dennyqiang 发表于 2010-3-11 17:51:51

两种方法可以解决:
1) 使用录制,录制过程中去点击一下Create Customer这个连接,RFT自动会把该对象保存起来,在脚本中直接调用该对象或者使用该对象的相关属性都可以。

2) 不使用录制,而是Insert Test Object这种方式,操作界面“手型”按钮的上方有一个"Select Method",选择"Time Delayed Selection",默认10秒钟延迟,这样就有10秒钟的时间把下拉菜单点出来,然后对着Create Customer这个链接即可抓取。

[ 本帖最后由 dennyqiang 于 2010-3-11 18:19 编辑 ]

张敏-lisa 发表于 2010-3-11 18:02:16

回复 2# 的帖子

恩,非常感谢您的回答。第一种方法我用的不熟,因为我才学习这个东西有两天,呵呵,以后准备研究研究。我使用了第二个方法,但是调用Create Customer( ccl.getHtml_menuItemShim8_2().click() )的Click方法时,运行代码的时候找不到这个link 的ID,不知道如何是好了。非常期待您的解答,再次感谢。

dennyqiang 发表于 2010-3-11 18:29:51

首先确认一下是否如图所示,另外你要确保点击了Create这个链接,如果是鼠标停在上面就出现下拉菜单的话,那么RFT是没有办法录制MouseMove这样的事件的(有别的方法实现,比较难一点而已)。所以导致的结果就是由于你没有在界面上调出Create Customer这个菜单,导致RFT找不到对象。

可尝试sleep(5) 让脚本暂停5秒钟,确保应用程序有足够的时间来反应,从而RFT不会抓漏对象。

但是这些都不是根本的解决方法,只是告诉你这个原理,其实根本的解决方法非常简单:Create Customer无非就是一个超链接,使用startBrowser()即可解决问题,直接把Create Customer这个超链接地址给startBrowser就可以了,如startBrowser("http://www.baidu.com"),完全可以忽略点击菜单这一步。

aiiaiyou 发表于 2010-3-17 18:02:09

如果是startBrowser(),则需要超链的http地址,而且有时候超链是需要动态的传一些值,比如操作员的权限什么的,这些都是无法获得的,所以startBrowser()也不是一个根本的解决办法

aiiaiyou 发表于 2010-3-17 18:04:17

个人觉得最根本的办法还是,通过对象识别器把超链做成一个对象,见过同事搞成功过,我Java能力不足,没搞过这个

张敏-lisa 发表于 2010-3-17 20:51:25

回复 6# 的帖子

是啊, 我也这样觉得。而且我觉得如果使用的是IE6的 话,估计代码运行不了。 不过我用的是IE8,也就先用楼上老师说的方法,慢慢看还能不能找到更好的方法
要不你问下你同事是怎么弄的 呵呵
页: [1]
查看完整版本: 请问如何抓取这样的对象?