IWindow:获取可映射的子项/转换为TestObject

时间:2014-10-06 18:41:24

标签: rft ibm-rational

我希望能够动态提取属于IWindow的所有对象,然后将其转换为TestObjects。 我使用以下内容列出了所有可用的IWindows

IWindow[] windows = root.getTopWindows();

然后,用户将根据其标题选择IWindow(使用windows[i].getText()来标识正确的标题)。然后,我希望能够提取所有的孩子,以便我可以在以后的阶段对他们进行操作。对于TestObject实例,我已经可以提取所有子项 - 但是如何从抓取IWindow到获取组成其用户界面的TestObjects

1 个答案:

答案 0 :(得分:1)

我确信是否可以从IWindow获取TestObjects或将IWindow转换为TestObject。也许还有另一种方法可以通过DomainTestObjects找到windows。我知道这不是问题的答案,但可能是:

public void displayDomainsAndTopObjects()
{
    DomainTestObject[] dtos = getDomains();
    for (DomainTestObject dto : dtos)
    {
        System.out.println("--- " + dto.getName() + " ---");
        TestObject[] tos = dto.getTopObjects();
        for (TestObject to : tos)
        {
            System.out.println(to.getDescriptiveName());
        }
    }
}

也许你可以通过这种方式找到解决方法?例如。显示所有打开的浏览器:

public void displayBrowsers()
{
    DomainTestObject[] dtos = getDomains();

    List<DomainTestObject> htmlDomains = new ArrayList<DomainTestObject>();
    for (DomainTestObject dto : dtos)
    {
        if (dto.getName().equals("Html"))
        {
            htmlDomains.add(dto);
        }
    }

    List<BrowserTestObject> browsers = new ArrayList<BrowserTestObject>();
    for (DomainTestObject htmlDomain : htmlDomains)
    {
        TestObject[] tos = htmlDomain.getTopObjects();
        for (TestObject to : tos)
        {
            if (to.getProperty(".class").equals("Html.HtmlBrowser"))
            {
                browsers.add((BrowserTestObject) to);
            }
        }
    }

    System.out.println("Found " + browsers.size() + " browsers:");
    for (BrowserTestObject browser : browsers)
    {
        System.out.println(browser.getProperty(".documentName"));
    }
}