IBM RFT 9.1:已定位对象但无法执行点击操作求助
嘿,这种用Excel驱动RFT执行测试的思路确实挺灵活的,不过碰到特定应用掉链子也挺闹心的。结合我处理过的类似场景,给你列几个大概率能解决问题的排查方向:
先排查元素定位的兼容性问题
你目前用的是.id定位,有些Web应用的元素ID可能是动态生成的,或者在IE环境下的属性解析逻辑和其他应用不一样。可以试试换用更稳定的定位方式,比如xpath或者name,把Excel里的步骤改成Click .xpath //*[@name='someElementName']这种形式,看看能不能正常识别元素。另外别忘了确认RFT依赖的IE组件(比如Java Access Bridge、RFT浏览器插件)在目标应用的IE环境里是正常启用的,这些组件要是没开,元素识别很容易出问题。验证Excel步骤的语法和格式
有时候特定应用的元素属性带特殊字符(比如ID里有破折号、点号),Excel里的步骤有没有写错?比如ID是user-info.123,要确保Excel里写的是Click .id user-info.123,没有多余的引号或者空格。还有,Excel单元格格式如果是数值型,可能会把长ID自动截断或者转成科学计数法,把所有步骤单元格都改成纯文本格式试试,避免参数传递出错。切换RFT的IE识别模式
RFT针对IE有DOM和ActiveX两种识别模式,默认一般是DOM,但有些老旧或者用了特殊控件的Web应用,可能得切换到ActiveX模式才能正常识别。你可以在RFT的测试项目设置里找到「Web浏览器配置」,切换模式后再跑一遍测试,看问题是否消失。另外也要确认IE版本和RFT 9.1的兼容性,官方支持的是IE8到IE11,要是目标应用用的是非标准IE版本,也容易出兼容问题。处理应用的动态加载或框架结构
要是目标应用用了AJAX动态加载元素,或者嵌套了iframe/frame,RFT可能会在元素还没加载完就执行操作,或者没切换到对应的框架里。可以在Excel步骤里加个等待步骤,比如WaitForElementPresent .id someElementId 10(等待10秒直到元素出现);如果是框架的问题,先加SwitchToFrame .name frameName切换框架,再执行点击操作。查看RFT的详细日志找根源
运行测试的时候打开RFT的详细日志,看看有没有具体的报错信息,比如「元素未找到」「超时」之类的。日志里的错误代码和描述能帮你快速定位问题:比如com.rational.test.ft.ObjectNotFoundException就是定位失败,com.rational.test.ft.TimeoutException就是元素加载超时,顺着日志提示调整就行。
内容的提问来源于stack exchange,提问作者Melodie Gauthier

