将Selenium Web测试与REST API测试集成

时间:2013-10-23 16:00:43

标签: rest selenium-grid

在用Selenium编写一些Web测试之后,我现在需要测试REST API。 我想用Selenium驱动我的浏览器并验证我的网页浏览器中显示的结果以及我启动API网址时生成的结果。 我的API URL处于HTTP模式,答案将采用JSON格式。

我找到了放心:https://code.google.com/p/rest-assured/ 但在跳跃和使用它之前,我想知道是否很容易将它与我的硒测试结合起来,以及是否有更好的选择。

由于

4 个答案:

答案 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等库。

阅读http://code.google.com/p/json-io/了解详情!

答案 2 :(得分:0)

我认为Selenium更适合UI测试。 对于测试REST API,我认为有更好的工具。 您可以使用REST API Testing工具,例如RestCase,RunscopevRest。 还有很多其他客户可以使用Postman等。

答案 3 :(得分:0)

正如Krishnam所讨论的,这绝对可以通过使用httpclient或类似方法来完成。我发现利用Selenium和httpclient API代码的组合而非单独的API测试工具非常有用,原因如下:

  1. 能够运行通过调用API然后阅读返回的内容进行验证的网站UI测试
  2. 能够运行将数据推送到服务器的API调用,并运行Selenium UI代码以验证网站上的结果
  3. 使用json序列化程序轻松查看从API返回的对象
  4. 能够在验证中执行任何自定义操作。就我而言,我已经为我的selenium套件编写了一个数据库访问层,以便轻松测试数据库中已正确保存的值
  5. 就我而言,运行API有时需要大量的设置(或潜在的模拟)。在我测试的系统上,在运行API命令之前使用网站上的Selenium webdriver命令可以毫不费力地完成此设置。 (例如,在我的系统上,创建用户并激活他们的帐户,这些帐户目前无法通过我们的API获得,并且在数据库中进行模拟或设置将是一场噩梦。)
  6. 显然,每个受测试的系统都不同,但这些优势可能有助于您确定这是否适合您。