【问题标题】:Identifying objects in IBM RFT识别 IBM RFT 中的对象
【发布时间】:2013-11-14 09:34:08
【问题描述】:

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

【问题讨论】:

    标签: rft ibm-rational


    【解决方案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。

    【讨论】:

    • 我同意避免在界面中创建 TestObjects 而直接在代码中使用它们将使您的测试脚本更加健全和健壮。您必须与您的开发人员合作,让他们在每个屏幕元素中放置 id。
    【解决方案2】:

    如果不查看您的页面,我无法确定,但我认为这些按钮实际上是两个不同的按钮。也许它们是由 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

    【讨论】:

    • 亚历山德罗,谢谢!但它们不是不同的按钮。对于第一个组合框选项会发生什么,没有带有标签的描述。因此,按钮位于 1 位置。(这是我记录的)但是当我选择第二个组合框选项时,会出现一个带有所选选项描述的标签。为了给这个标签留出空间,按钮稍微向下移动。因此位置发生了变化,RFT 无法识别它。
    • @Nim92 您是否尝试再次录制按钮?您是否 100% 确定它是完全相同的按钮?查看 RFT “认为”按钮在哪里使用此代码:www-01.ibm.com/support/docview.wss?uid=swg21402481(将在按钮周围显示一个红色矩形),或者只需在 RFT 中右键单击它并选择“突出显示”。如果高亮矩形错位,您需要以某种方式“刷新”对象。另一个好主意是在选择之后动态找到它,而不是记录它。
    • 教程链接失效
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-02
      相关资源
      最近更新 更多