1

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

4

3 回答 3

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。

于 2013-12-31T02:02:22.337 回答
0

如果不查看您的页面,我无法确定,但我认为这些按钮实际上是两个不同的按钮。也许它们是由 javascript 生成的,或者它们只是在您在组合框中选择的选项后未隐藏。

如果它们是两个不同的按钮(记录它们并查看识别属性),您可以用正则表达式替换某些属性或检查按钮是否可见/存在,然后单击它:

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

这是关于对象识别的更完整的教程

于 2013-11-14T09:44:39.770 回答
0

您可以在属性选项卡中增加 Rational Performance Tester AssureScript 的容差,或者您可以设置描述但隐藏值。您还可以制作更新对象映射的自定义代码,以准备在 java IF 结构中进行此更改

于 2013-11-27T14:23:29.247 回答