有沒有辦法查看所有瀏覽器窗口是否關閉?我看到,如果您在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