识别IBM RFT中的对象

时间:2013-11-14 09:34:09

标签: rft ibm-rational

在RFT中执行我的脚本时,由于按钮的轻微位置更改,我的脚本失败了。 (由于标签出现在按钮附近,此按钮的位置会根据为上一个组合框选择的选项稍微改变) 由于窗口中有此按钮有2个位置,因此其中一个脚本会失败,而其他脚本会通过。 请建议如何在RFT的2个不同位置识别同一个对象?

3 个答案:

答案 0 :(得分:1)

如果您没有使用预先映射的值,而是直接在代码中使用对象(我个人发现它非常有用......它允许我这么做RFT :)的伟大和奇妙的事情,以下应该工作正常:

private void clickObject(String uniqueIdentifier) {

    // Find object
    RootTestObject root = RootTestObject.getRootTestObject();
    TestObject[] matchingObjs = root.find(atProperty(".id", uniqueIdentifier));

    if (matchingObjs.length > 0) {
        // Click the object
        ((GuiTestObject) matchingObjs[0]).click();
    }

    // Clean-up
    unregister(matchingObjs);
}

随意更换" .id"无论什么属性最适合这种情况...因为我主要使用Web应用程序," .id"财产对我来说非常好。

因为该方法每次都会重新找到对象,所以它会在方法被调用时抓住对象的位置。清理还可以防止任何奇怪的,可怕的,以及其他不幸的UnregisteredObjectExceptions出现。

答案 1 :(得分:0)

不看你的页面我不能确定,但​​我认为按钮实际上是两个不同的按钮。也许它们是由javascript生成的,或者只是在你在组合框中选择的选项后才会被隐藏。

如果它们是两个不同的按钮(记录它们并查看识别属性),您可以replace some properties with a regular expression或检查按钮是否可见/存在然后单击它:

if (btn_button1.exists()) {
    btn_button1.click();
} else if (btn_button2.exists()) {
    btn_button1.click();
}

这是a more complete tutorial on Object Recognition

答案 2 :(得分:0)

您可以在属性选项卡中增加Rational Performance Tester AssureScript的容差,也可以设置描述但隐藏值。您还可以创建一个自定义代码来更新对象映射,以便为java IF结构中的此更改做准备