【问题标题】:How do I get a TopLevelTestObject from a ProcessTestObject in RFT?如何从 RFT 中的 ProcessTestObject 获取 TopLevelTestObject?
【发布时间】:2013-07-15 13:13:36
【问题描述】:

给定一个 ProcessTestObject,有没有办法将与该进程关联的窗口检索为 BrowserTestObject 或至少一个 TopLevelTestObject?例如

// Open IE at http://www.google.com/
ProcessTestObject browserProcess = startApp("Google");
// Wait for the browser to load...there's probably a better way, but I don't know it.
sleep(10);
// Now what?

ProcessTestObject 似乎没有我可以使用的任何子项。我试过了

browserProcess.find(atDescendant(".class", "Html.HtmlBrowser"));

browserProcess.find(atDescendant(".class", "Html.HtmlDocument"));

但搜索都不会产生任何结果。尝试查找特定的 HTML 标记也失败了。

我可以在 RootTestObject 中搜索 HtmlBrowser,它可能在 98% 的时间都可以工作。但是,我真的更喜欢一种方法来保证我正在抓取我刚刚启动的浏览器,而不是之前的测试中可能打开的一些杂散窗口。我能想到的唯一其他选择是搜索所有浏览器窗口并事先关闭它们,但我认为可能有更简单的解决方案。

【问题讨论】:

    标签: java rft


    【解决方案1】:

    关闭浏览器并打开一个新的浏览器是个好主意,因为当播放正在寻找对象时,它不必在旧浏览器中搜索。

    获取 ProcessTestObject 的另一种方法可能是:

    public void testMain(Object[] args) 
    {
        ProcessTestObject pto = startBrowser("http://www.myurl.com");
        System.out.println("PTO "+ pto.getProcessId());
        TestObject[] browsers = find(atChild(".class", "Html.HtmlBrowser" ));
        for(TestObject browser:browsers)
        {
            if(pto.getProcessId() == browser.getProcess().getProcessId())
            {
                //we hv a match, use it 
                ((BrowserTestObject)browser).maximize();
            }
    
        }
        unregisterAll();    
    
    }
    

    //注意-对于 IE8 及以上版本,您需要将 ivory.properties 文件中的标志设置为 true rational.test.ft.enablelcieprocessing=true

    【讨论】:

    • 更改 ivory.properties 文件并使用您的解决方案后,我得到的结果不一致。有时 startApp/startBrowser 会报告正确的 processId,有时则不会。我想出了一个替代解决方案;我没有检查一个 processId 与 startApp 返回的浏览器相匹配的浏览器,而是检查一个在 startApp 调用之前 processId 不存在的浏览器。无论 RFT 的配置或 startApp 的行为如何,它都应该可以正常工作。
    • 在启动新浏览器之前关闭所有打开的浏览器窗口怎么样?您可能想同时尝试这两种方法,看看哪一种更有效。
    • 我可能最终也会关闭浏览器,但我想要一些可以依靠的东西。理论上,尝试关闭浏览器窗口可能会失败;例如,如果它打开一个对话框窗口,询问我是否确定要关闭多个选项卡。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 2014-05-02
    相关资源
    最近更新 更多