Robotframework:如何检索请求的答案

时间:2018-10-22 13:37:11

标签: selenium http-post robotframework

我想测试用户的激活。为了验证用户的创建,我单击“有效”按钮,前端请求后端发送POST请求。
我的目标是检索此查询的答案。

我尝试了以下关键字:

*** Setting ***
Library    SeleniumLibrary
Library    HttpLibrary.HTTP    

*** Keyword ***
!Confirm entry
    [Arguments]    ${id_button}
    Wait Until Element Is Visible    ${id_button}
    Click Element    ${id_button}
    Response Status Code Should Equal    200

*** Setting ***
Library    SeleniumLibrary

*** Keyword ***
!Confirm entry
    [Arguments]    ${id_button}
    Wait Until Element Is Visible    ${id_button}
    ${status}    Run Keyword And Return    Click Element    ${id_button}

这两种解决方案都不会让我满意。
请问您对在Robotframework中使用关键字来解决我的问题有所了解吗?

最诚挚的问候

3 个答案:

答案 0 :(得分:3)

Click Element将不会返回您期望的状态代码。您无法使用硒获取状态代码。

Response Status Code Should Equal是HTTP库,仅在遵循HTTP请求(例如HTTP库中的GETPOST关键字)时才有效。

Example      
    HTTP Context    httpstat.us
    GET  /302
    Response Status Code Should Equal   302

它不适用于硒关键字。

答案 1 :(得分:0)

正如已经给出的答案所突出显示的那样,混合使用HttpLibrary和SeleniumLibrary不会使您访问UI和Web服务器之间的http交换的状态代码。

如果要确保为来自浏览器的所有呼叫都分配一个http 200,则必须通过代理路由通信。在此Stackoverflow Answer工作示例中,给出了使用BrowserMob代理的示例。

答案 2 :(得分:0)

要重复其他人已经说过的内容,硒无法拦截浏览器的请求。
出于不同选择的目的,另一种选择是使用Service Workers-将获取网络流量并在控件中调用js,该控件可以存储(甚至修改)传输的数据。

其设置可能非常复杂(注入worker和js,然后通过robotframework与之通信),这里是very through SO answer入门。