2013-10-23 150 views
2

在用Selenium編寫一些Web測試之後,我現在需要測試REST API。 我想用Selenium驅動我的瀏覽器,並驗證我的網頁瀏覽器中顯示的結果以及啓動我的API網址時生成的結果。 我的API網址處於HTTP模式,答案將採用JSON格式。集成Selenium Web測試和REST API測試

我發現放心:https://code.google.com/p/rest-assured/ 但在跳躍和使用它之前,我想知道是否可以很容易地將它與我的硒測試相結合,以及是否有更好的選擇。

感謝

回答

1

您可以強制硒等待結果,成爲DOM可用。所以是的,Selenium是一個很好的工具來測試你的REST調用,特別是如果你的結果更新頁面上顯示的HTML。

WebDriver driver = new FirefoxDriver(); 
driver.get("http://somedomain/url_that_delays_loading"); 
WebElement myDynamicElement = (new WebDriverWait(driver, 10)) 
    .until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement"))); 

關於更多examples請參見下頁。

+1

嗨凱爾, 感謝您的回答,此腳本僅檢查存在的元素,但如何檢查網頁的內容並將其與API調用的響應進行比較? 乾杯。 Zied – Ziwdigforbugs

+0

@Ziwdigforbugs API調用完成後更新您的HTML。使用Selenium檢查HTML元素。如果您需要更復雜的內容來直接檢查JSON響應,請使用Selenium以外的工具。 – KyleM

1

當然可以將REST API集成到WebDriver。我一直在努力工作,它像一個魅力。

服務層功能:

/** 
* This function will retrieve the child nodes under the current TG element 
* @param webDriver The WebDriver reference 
* @param element The Web Element whose child nodes are to be retrieved 
* @return List<WebElement> The list of Child Elements for element. 
* @throws Exception 
*/ 
public static List<WebElement> getChildElements(WebElement element,WebDriver webDriver) throws Exception {   
    try{ 
     List<WebElement> elementChilds = element.findElements(By.xpath(GlobalTreeGridValues.TreeGrid.TG_Shared_NextLevelXPath)); 
     System.out.println("Avaialble child nodes for the current node are "+ element.findElements(By.xpath(GlobalTreeGridValues.TreeGrid.TG_Shared_NextLevelXPath)).size()); 
     return elementChilds; 
     }catch(ElementNotFoundException ex){ 
     System.out.println("Error in getting the XPath "+ ex.getMessage()); 
     return null; 
    }  
} 

爲了讀取該數據到Java對象,我們只需要JSON格式化和圖書館像的HttpClient等

閱讀http://code.google.com/p/json-io/更多信息!

0

我認爲Selenium更適用於UI測試。 對於測試REST API,在我看來有更好的工具。 您可以使用工具REST API Testing,如RestCase,RunscopevRest。 也有許多休息客戶端可用,如郵遞員等。

+1

Selenium也應該能夠發送AJAX或HTTP請求。這並不回答問題,而是建議替代工具/庫 – prasun

+0

他確實要求替代方案 - 我同意,Selenium當然可以撥打電話;然而,有更好的工具可用於適當的功能API測試。 – mansilladev

0

正如Krishnam所討論的,這絕對可以通過使用httpclient或類似的。我發現它非常有用利用硒和HttpClient的API代碼的組合,而不是單獨的API測試工具,有以下原因:

  1. 能夠運行獲得通過調用API,然後讀取驗證網站的UI測試返回的內容
  2. 能夠運行數據推送到服務器API調用,並運行硒UI代碼來驗證網站
  3. 使用JSON串行器看對象的容易地從API返回容易
  4. 對結果
  5. 能夠在驗證中進行任何自定義操作。就我而言,我已經爲我的硒套件寫了一個數據庫訪問層,以便輕鬆地測試已在數據庫中正確保存的值。
  6. 在我的情況下,運行API有時需要大量的設置(或潛在的模擬)。在我測試的系統上,在運行API命令之前,可以在網站上使用Selenium webdriver命令,而無需太多困難地完成此設置。 (例如,在我的系統上,創建用戶並激活他們的帳戶,目前通過我們的API無法使用這個帳戶,並且在數據庫中模擬或設置是一場噩夢。

很顯然,每個被測試的系統都不同,但這些都是可以幫助您確定這是否適合您的正確方法的一些好處。