Selenium webdriver 使用restapi进行UI测试

Selenium webdriver 使用restapi进行UI测试,selenium-webdriver,automation,web-api-testing,Selenium Webdriver,Automation,Web Api Testing,我在自动化方面有一个要求,即一次测试UI和API。从UI中获取参数并将其传递给API并获取响应 步骤如下: 步骤1:在搜索字段中输入文本 第二步:点击搜索按钮 步骤3:从搜索字段读取文本并传递到API 第四步:获得响应 步骤5:比较UI和API响应 自动化有可能吗 请帮我提出建议。您可以使用量角器E2E测试来完成此操作: 对于步骤1到步骤3,您可以使用“量角器中的元素选择器”获取或设置任何web元素的文本。您可以在此处找到文档: 对于第4步: 您可以使用“http”或“请求”模块对服务器进行

我在自动化方面有一个要求,即一次测试UI和API。从UI中获取参数并将其传递给API并获取响应

步骤如下:

  • 步骤1:在搜索字段中输入文本
  • 第二步:点击搜索按钮
  • 步骤3:从搜索字段读取文本并传递到API
  • 第四步:获得响应
  • 步骤5:比较UI和API响应
自动化有可能吗


请帮我提出建议。

您可以使用量角器E2E测试来完成此操作:

对于步骤1步骤3,您可以使用
“量角器中的元素选择器”
获取或设置任何web元素的文本。您可以在此处找到文档:

对于第4步:

您可以使用
“http”
“请求”
模块对服务器进行调用。我建议api调用返回一个承诺,以便在测试中可以使用
browser.wait()
函数并等待调用完成

let apiCall = function () {
    return new Promise((resolve, reject) => {
        request.get(url, function (error, response, json) {
            if (!error && response.statusCode == 200) {
               return resolve(JSON.parse(json));
            } else {
                return reject(error);
            }
        });
    });
}
在你的测试中

it("validates something",()=>{
 //...
  browser.wait(apiCall(),timeout).then(json => {
              //do stuff with json
            });
 // Continue with your test
}
希望这有帮助。如果您有任何疑问,请告诉我。谢谢。

怎么样,您可以定义UI和Rest API测试, 在您的情况下,您只需定义w测试工作流:

endly test.yaml

@test.yaml

pipeline:
  init:
    action: selenium:start
    version: 3.4.0
    port: 8085
    sdk: jdk
    sdkVersion: 1.8
  testUI:
    action: selenium:run
    browser: firefox
    remoteSelenium:
      URL: http://127.0.0.1:8085
    commands:
      - get(http://UIEndpoint)
      - (#searchText).clear
      - (#searchText).sendKeys(my scarch criteria)
      - (#run).click
      - command: output = (#output).text
        exit: $output.Text:/done crtieria here/
        sleepTimeMs: 1000
        repeat: 10
      - close
    expect:
      output:
        Text: /may validate outut here/
  testREST:
    action: http/runner:send
      requests:
        - url: 'http://RESTAPIEndpoint'
          method: POST
          Body: ${testUI.output.Text}
          expect:
            Code: 200
参考资料:


非常感谢您的快速回复。我将尝试一下这一点同时结合UI e2e和API测试是个坏主意。什么是需要这种组合的用例。通过这个概念,我们将知道参数如何从UI传递到API,以及API的响应是什么。以及响应如何在UI中更新。简单地说,我们将获得UI或API的确切版本。