在使用 Selenium 编写了一些 Web 测试之后,我现在需要测试 REST API。我想用 Selenium 驱动我的浏览器,并使用启动我的 API url 时生成的结果来验证我的网络浏览器中显示的结果。我的 API URL 处于 HTTP 模式,答案将采用 JSON 格式。
我找到了放心:https ://code.google.com/p/rest-assured/ 但是在跳转和使用它之前,我想知道它是否容易与我的硒测试集成,以及是否有更好的选择.
谢谢
在使用 Selenium 编写了一些 Web 测试之后,我现在需要测试 REST API。我想用 Selenium 驱动我的浏览器,并使用启动我的 API url 时生成的结果来验证我的网络浏览器中显示的结果。我的 API URL 处于 HTTP 模式,答案将采用 JSON 格式。
我找到了放心:https ://code.google.com/p/rest-assured/ 但是在跳转和使用它之前,我想知道它是否容易与我的硒测试集成,以及是否有更好的选择.
谢谢
当然可以将 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/了解更多信息!
您可以强制 Selenium 等待结果在 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")));
有关更多示例,请参见以下页面。
我认为 Selenium 更适合 UI 测试。在我看来,对于测试 REST API,有更好的工具。您可以使用RestCase、Runscope或vRest等工具进行REST API 测试。还有许多其他可用的客户端,例如 Postman 等。
正如 Krishnam 所讨论的,这绝对可以通过使用 httpclient 或类似方法来完成。我发现结合使用 Selenium 和 httpclient API 代码而不是单独的 API 测试工具非常有用,原因如下:
显然,每个被测系统都是不同的,但这些好处可以帮助您确定这是否适合您。