如何关注TAB以及如何在RFT中使用该组件,我怎么才能知道?

时间:2013-11-28 07:51:17

标签: java tabs focus rft tab-ordering

我使用RFT并且想知道如何获得Focus所在的对象并且能够在之后使用该对象。 例如,我的脚本开始比我写 getScreen().inputKeys("{TAB}")

  1. 我想知道哪个组件有焦点

  2. 在此之后我想知道如何获得此焦点对象的属性,如

  3. .getProperty(".text");.getProperty(".name");

    我需要这个的原因是因为我想编写一个测试脚本来测试我们网站上的Focus订单。

    提前谢谢你,

    Krisz

2 个答案:

答案 0 :(得分:0)

您可以使用像

这样的简单方法来完成此操作
private void hasFocus(TestObject to) {
    boolean hasFocus = ((Boolean)to.getProperty(".hasFocus")).booleanValue();
    if (!hasFocus)
        throw new RuntimeException(to.getNameInScript()+" has an invalid focus order!");
}

并在每次TAB按下后调用此方法;给予期望获得焦点的测试对象作为参数。示例脚本代码:

    browser_htmlBrowser().inputKeys("{TAB}");
    hasFocus(firstObj());

    browser_htmlBrowser().inputKeys("{TAB}");
    hasFocus(secondObj());

答案 1 :(得分:0)

我会搜索“.hasFocus”属性设置为“true”的对象。从那里,您可以在循环中运行该方法,以检查当前聚焦的元素是否是您想要的元素。我个人也建议(如果可能的话)检查“.id”属性,因为对于给定的(网页)页面,这保证是唯一的标识符...而我不完全确定“.name” “财产是。

public void testMain(Object[] args) {
    ArrayList<String> focusOrder = new ArrayList<String>();
    String currentlyFocusedObjectName = "";

    // Add element names to the list
    focusOrder.add("Object1");
    focusOrder.add("Object2");
    // ...
    focusOrder.add("Objectn");

    // Iterate through the list, tabbing and checking ".name" property each time
    for (String s: focusOrder) {
        TestObject currentObject = getCurrentlyFocusedElement();

        // Tab
        getScreen().inputKeys("{TAB}");

        if (currentObject != null) {
            currentlyFocusedObjectName = getCurrentlyFocusedElement().getProperty(".name")
                .toString();

            // Do other stuff with the object
        }
        else {
            currentlyFocusedObjectName = "";
        }

        // Verify that the currently focused object matches the current iteration in the list.
        vpManual(s + "HasFocus", currentlyFocusedObjectName, s).performTest();
    }
}

private TestObject getCurrentlyFocusedElement() {

    RootTestObject root = RootTestObject.getRootTestObject();
    TestObject[] focusedObjects = root.find(atProperty(".hasFocus", "true");
    TestObject currentlyFocusedObject = null;

    // Check to ensure that an object was found
    if (focusedObjects.length > 0) {
        currentlyFocusedObject = focusedObjects[0];
    }
    else {
        unregister(focusedObjects);
        return null;
    }

    // Clean up the object
    unregister(focusedObjects);

    return currentlyFocusedObject;
}