我尝试使用以下代码关闭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;行动,谁能告诉我我做错了什么?
提前致谢
答案 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;
}