有没有办法查看所有浏览器窗口是否关闭?我看到,如果您在WebDriver上调用driver.quit()或driver.close(),则sessionId将变为null。有没有办法检查?Selenium Webdriver sessionId或检查所有浏览器窗口是否关闭
我不想调用封闭或退出驱动程序,因为它会抛出WebDriverException。所以我想在继续之前查看浏览器的状态。
有没有办法查看所有浏览器窗口是否关闭?我看到,如果您在WebDriver上调用driver.quit()或driver.close(),则sessionId将变为null。有没有办法检查?Selenium Webdriver sessionId或检查所有浏览器窗口是否关闭
我不想调用封闭或退出驱动程序,因为它会抛出WebDriverException。所以我想在继续之前查看浏览器的状态。
只需设置
driver=null;
每次关闭浏览器,比检查
if (browser!=null){
//Attention: this comand is not supported
//as far as i know ;)
driver.doSomething();
}
或
try{
}catch (NullPointerException e)
e.printStackTrace();
System.err.print"DAMN";
}
或接收一个NullPointerException异常;)
我认为最干净w ^唉,以检测是否所有的窗口都关闭是水木清华这样的:
boolean allWindowsClosed = webDriver.getWindowHandles().isEmpty();
getWindowHandles返回一组窗口的所有打开的窗口句柄 - 见http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/WebDriver.html#getWindowHandles()
实际调用getWindowHandles而浏览器窗口消失将引发“ UnreachableBrowserException”。
您必须将调用放入try-catch块并处理该错误。实际上,这是唯一已知的用于捕获意外浏览器窗口关闭的WORKING workndnd。我有一个配置类的静态方法做我的司机处理:我重新启动我的浏览器是这样的:
protected static void loadPages() {
if (driver == null || driver.toString().contains("null")) { //null refers to an missing session id
driver = new FirefoxDriver();
//load all my page objects like
loginpage = new LoginPage(driver);
//....
//....
}
try {
if (driver.getWindowHandles() == null || driver.getWindowHandles().isEmpty()){ //will cause an UnreachableBrowserException if the browser really is not avalable.
try { //you actually dont need this try catch block
driver.quit();
} catch (Exception e) {
System.err.println("Quitting levtover driver did not work.");
}
driver = null; //you have to set the driver to null
loadPages();
}
} catch (UnreachableBrowserException ube) {
driver = null; //like above set to null to make sure no driver left
}
}
现在,OFC当前的测试将会失败,但你将能够继续使用其余的人。
public bool InstanceExist
{
get
{
if (Instance != null)
{
try
{
return (Instance.WindowHandles != null); // allways returns true if browser instance exist or thrown error
}
catch (Exception e)
{
return false;
// means that browser was closed by user
}
}
return false; // means that it wasn't created yet or was closed by developer programmally
}
}
您需要检查3种情况:wasnt创建
所有这些情况都使用此代码进行检查。
在WebDriver上调用quit()会关闭驱动程序打开的所有打开的窗口。那么你想检查什么? “浏览器状态”是什么意思? – 2012-07-27 10:17:40