我正在使用Java和Selenium來自動化一些測試用例。這涉及到加載帶有搜索結果的單個頁面並遍歷單個頁面上的每個100-1000個鏈接。將測試配置設置爲只檢查大約100個結果通常是可以的,但是任何高於此值的結果都會拋出NoSuchWindowException異常(WebDriverException的子類)。當我從父句柄切換到新打開的窗口句柄時,會發生這種情況。Java Selenium WebDriver - 無法找到窗口時正確的異常處理技術
我在do while循環中寫了一個try-catch語句來捕獲異常並重試該過程......但是,無論我嘗試什麼,Selenium都不會很好,並且我的代碼執行突然結束..: (下面是代碼:
boolean completed = false;
do{
try{
//click the search result
driver.findElement(By.xpath("my xpath string")).click();
//switch to the new window
for(String winHandle: driver.getWindowHandles()){
driver.switchTo().window(winHandle);
}
//for our test we need to save the source
source = driver.getPageSource();
//close popup window and and switch back to the parent handle
driver.close();
driver.switchTo().window(parentHandle);
completed = true;
}catch(WebDriverException ex){
System.out.println("something went wrong while switching windows... retrying");
driver.close();
driver.switchTo().window(parentHandle);
}
}while(!completed);
我已經嘗試了當一個異常被捕獲。例如,我試圖節省父網址,使用driver.quit(),然後嘗試重新啓動驅動器的各種方法。然而,然後Selenium抱怨我無法啓動Firefox驅動程序後調用driver.quit()...
任何想法如何更好地處理我的代碼的catch部分?
異常從您的catch塊中拋出。你不抓住它,你的應用程序退出 – Tala