2013-05-21 38 views

回答

4

在Java:您可以等待這樣readyState的變化:

int tryCount = 0; 
    boolean desiredResponseReceived = false; 
    while (desiredResponseReceived == false && tryCount < 20) { 
     String readyState = (String) js.executeScript("return xhr.readyState;"); 
     if (readyState.equals("4")) { 
      desiredResponseReceived = true; 
     } 
     else { 
      Thread.sleep(250); 
      tryCount++; 
     } 
    } 

    if (desiredResponseReceived == false) { 
     driver.quit(); 
    } 

一個問題尋找就緒狀態時,該頁面可以製出一個以上的XMLHttpRequest。你不知道哪一個是哪個。即使您點擊相關按鈕(例如)後立即檢查它,即使這可能會觸發多個請求。而且不知道哪個會先返回。

您的情況的另一種選擇可能是改爲等待select框中的options框。所以在上面的代碼中,你可能會更換

String readyState = (String) js.executeScript("return xhr.readyState;"); 
    if (readyState.equals("4")) { 

List<WebElement> options = driver.findElements(By.tagName("option")); 
    if (options.size() > 1) { 

或者,如果你不知道會發生什麼的options最小數,你可以測試與特定attributeoption是在List。或類似的東西。

相關問題