2014-04-01 128 views
1

我有一個簡單的C#方法,在繼續使用我的Selenium WebDriver測試之前,等待所有jQuery AJAX請求完成。我如何知道哪些AJAX請求正在等待處理?

我想知道的究竟是哪些請求正在等待,當我達到最大等待時間。有沒有辦法做這樣的事情?我探討了網絡和jQuery文檔,但找不到任何東西。

public void WaitForAjax(IWebDriver driver) 
    { 
     const int ajaxSleepInMilliseconds = 250; 
     int counter = 0; 
     const int maxSleeps = 40; 
     while (counter < maxSleeps) 
     { 
      var javaScriptExecutor = driver as IJavaScriptExecutor; 
      var ajaxIsComplete = javaScriptExecutor != null && 
           (bool) javaScriptExecutor.ExecuteScript("return jQuery.active == 0"); 
      if (ajaxIsComplete) 
      { 
       break; 
      } 
      Thread.Sleep(ajaxSleepInMilliseconds); 
      counter += 1; 
     } 
     if (counter >= maxSleeps) 
     { 
      var currentAjaxCalls = ""; // ??? 
      throw new WebDriverException("Maximum number of WaitForAjax Thread.Sleeps were hit. Waited for AJAX " + 
       "for: " + ((maxSleeps * ajaxSleepInMilliseconds)/60) + " seconds; the calls in progress were: " + 
       currentAjaxCalls); 
     } 
    } 

回答

0

不,沒有建立方式來了解優秀的ajax請求。

您可以

  • 改變腳本攔截請求,並通知有關完成你的代碼(即,使用ajaxTransport
  • 捕獲HTTP流量知道,當所有懸而未決的請求是完整。
+0

re。捕獲HTTP流量 - 如果我使用browsermob,我如何確保沒有未完成的請求? –

相關問題