为什么我的密切浏览器代码不适用于Java RFT

时间:2015-02-04 15:58:13

标签: java rft

我尝试使用以下代码关闭RFT中的所有打开的IE浏览器(作为清理步骤,在执行测试脚本之前)

        public void testMain(Object[] args {

         RootTestObject root = RootTestObject.getRootTestObject();   

        {
           // Find all TestObjects with a class of HTML Browser
        TestObject[] browsers = find(atDescendant(".class","Html.HtmlBrowser"));
        ProcessTestObject browserProcess;

        System.out.println(browsers.length); //print the number of browsers found

        for (int j = 0, j<browsers.length; j++)
        {
           System.out.println(broswers[j].getProperties()); //print the properties of all browsers found
        }   



        for (int i=0;i<browsers.length;i++)
        {
            // Get the process of the browser
            browserProcess = browsers[i].getProcess();

            // Close the browser
            browserProcess.kill();

            // Unregister the browser object
            browserProcess.unregister();
        }
    }
}

它运行没有错误,但浏览器仍保持打开状态。

然后我添加了BOTH打印语句来验证它确实找到了浏览器,我的控制台显示它确实找到了AND打印它们的属性。

但由于某种原因,它不会执行&#34; .kill&#34;行动,谁能告诉我我做错了什么?

提前致谢

2 个答案:

答案 0 :(得分:0)

看看这是否适合你

void closeBrowsers()
{
    TestObject browsers[] =  find(atChild(".class","Html.HtmlBrowser"));//Browser object wud be found at child level

    System.out.println("Browsers found "+ browsers.length);
    for(TestObject browser:browsers)
    {
        ((BrowserTestObject)browser).close();//use the inbuilt close method
    }

    //checking again 
     browsers =  find(atChild(".class","Html.HtmlBrowser"));

     System.out.println("After closing  found "+ browsers.length + " browsers still running");

     //need to try some other approach now..we will figure out something

     unregister(browsers);

}

答案 1 :(得分:0)

我曾经杀死了从Java Runtime调用taskkill命令的浏览器。 IE浏览器不是一个非常友好的浏览器。

代码是这样的

boolean closeBrowsers() {
    try {
        Runtime.getRuntime().exec("taskkill /f /t /im iexplore.exe");
        return true;
    } catch (IOException e) {
        System.out.println("cannot close browser");
        e.printStackTrace();
    }
    return false;
}