2

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

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

谢谢

4

4 回答 4

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/了解更多信息!

于 2014-03-08T18:17:48.597 回答
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")));

有关更多示例,请参见以下页面。

于 2013-10-23T16:04:37.010 回答
0

我认为 Selenium 更适合 UI 测试。在我看来,对于测试 REST API,有更好的工具。您可以使用RestCase、RunscopevRest等工具进行REST API 测试。还有许多其他可用的客户端,例如 Postman 等。

于 2015-11-10T05:34:59.397 回答
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 使用,并且在数据库中模拟或设置将是一场噩梦)。

显然,每个被测系统都是不同的,但这些好处可以帮助您确定这是否适合您。

于 2016-12-07T22:44:35.190 回答