【问题标题】:Why isn't my close browser code working in Java RFT为什么我关闭的浏览器代码不能在 Java RFT 中运行
【发布时间】:2015-02-04 15:58:12
【问题描述】:

我正在尝试使用以下代码关闭 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();
        }
    }
}

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

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

但由于某种原因,它不会执行“.kill”动作,谁能告诉我我做错了什么?

提前致谢

【问题讨论】:

    标签: java rft


    【解决方案1】:

    看看这是否适合你

    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);
    
    }
    

    【讨论】:

    • 感谢您的代码;只要没有打开多个选项卡的浏览器,它就可以工作(在这种情况下,它会打开浏览器以及确认关闭多个选项卡的对话框)我希望有一个代码可以在内部强行终止浏览器进程,无论标签或其他操作条件。另外,为了学习,我真的很想知道为什么我的不起作用。再次感谢您的帮助
    【解决方案2】:

    我曾经杀死浏览器从 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;
    }
    

    【讨论】:

    • 感谢您的帮助,这对我不起作用(没有关闭浏览器)。
    • 我的错,错字!试试“taskkill /f /t /im iexplore.exe” 我现在正在编辑帖子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2012-12-04
    • 2012-08-16
    • 1970-01-01
    相关资源
    最近更新 更多