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