2014-11-14 81 views
2

有時當我運行一個測試,網站永遠不會停止加載,我的測試在它上面。我如何設置driver.get()方法不等待頁面加載?如果它不可能有任何解決方法或其他方法可以替代driver.get()?如何阻止硒webdriver等待頁面加載?

+2

你應該問自己的第一個問題是爲什麼你的網站不停止加載? – 2014-11-14 21:09:32

+0

你打算如何測試一個永不停止加載的網站? – Saifur 2014-11-14 22:20:30

+0

這不是我的網站,我不需要它完全加載,我只需要加載幾個控件/按鈕。 – user1852879 2014-11-14 22:29:45

回答

8

提早退出頁面加載等待的最簡單方法是設置頁面加載超時。當超時到期時,您可以捕獲TimeoutException並繼續下一步測試。調用此操作的代碼看起來像下面這樣:

// Set the page load timeout to 10 seconds. 
driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); 

try { 
    driver.get("http://url/to/my/slow/loading/page"); 
} catch (TimeoutException e) { 
    // Ignore the exception. 
} 

// Proceed with your next step here. 

注意,你可能需要使用一個WebDriverWait或類似,以確保您感興趣的是出現在頁面上的元素。

0

我們可以設置pageLoadTimeout,一旦設置它將通過webdriver會話,如果由於超時而拋出異常,那麼我們不能恢復相同的會話,所以需要創建新的實例。

 WebDriver driver = new FirefoxDriver(); 

     //waits 10 seconds for page to load 
     driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); 
     try { 
      driver.get("https://yourdomain.com"); 
     } catch (TimeoutException e) { 
      driver.close(); 
      driver.quit(); 

      //create new instance of webdriver 
      driver = new FirefoxDriver(); 

      //waits 5 minutes for page to load 
      driver.manage().timeouts().pageLoadTimeout(300, TimeUnit.SECONDS); 
      driver.get("https://yourdomain.com"); 
     } 
相關問題