1

我希望能够动态提取属于 an 的所有对象IWindow,然后将它们转换为TestObjects. 我列出了所有可用IWindows的:

IWindow[] windows = root.getTopWindows();

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

4

1 回答 1

1

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

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"));
    }
}
于 2014-10-07T06:39:39.407 回答