Selenium webdriver 使用restapi进行UI测试
我在自动化方面有一个要求,即一次测试UI和API。从UI中获取参数并将其传递给API并获取响应 步骤如下: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”或“请求”模块对服务器进行
- 步骤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
参考资料: