【问题标题】:How to use the url that came in response如何使用响应的 url
【发布时间】:2019-08-15 11:27:30
【问题描述】:

帮助了解和指导需要进一步完成的工作。我使用机器人框架版本 3.1.1 和 Python 2.7 编程语言编写自动测试脚本,现在有一个任务是开发一个可以处理 POST / GET 请求的测试。因此,我向系统发出 POST 请求以启动付款。答案是付款已创建,但所有操作都需要点击答案中的链接。

请求:

Create Session    allias    URL
&{params}=    Create Dictionary    params1=value1  params2=value2  
${resp}=    Post Request    allias    /init_payment.php    params=${params}
Should Be Equal As Strings    ${resp.status_code}    200

回复帖子回复:

 <?xml version="1.0" encoding="utf-8"?>
<response><pg_status>ok</pg_status><pg_payment_id>3016695</pg_payment_id><pg_redirect_url>https://test.paybox.money/payment.html?customer=028c44bf25b6be251199221d04b570c2</pg_redirect_url><pg_redirect_url_type>need data</pg_redirect_url_type><pg_salt>8OYUsodtnaTWKbOD</pg_salt><pg_sig>a26e61d6eb710c430d67150498d1f555</pg_sig></response>

如何显示框架以便它可以通过重定向 url?非常感谢您的帮助。

【问题讨论】:

    标签: python-2.7 tdd robotframework


    【解决方案1】:

    Robot Framework 中的 RequestsKeywors 使用 Requests HTTP 客户端。从这个库中读取quickstart,您会发现响应的内容在text 字段中可用。

    ${body}=    ${resp.text}
    

    那么您很可能想要解析 XML。你可以使用XML library

    会是这样的

    ${root} =   Parse XML   ${body}
    ${link} =   Get Element Text    ${root} response/pg_redirect_url
    

    【讨论】:

    • 在响应文本中搜索项目时。我收到错误:ParseError: not well-formed (invalid token): line 1, column 9
    • 各位同事,请帮忙解答一下。为什么解析 XML 时返回以下内容: 0x044FD5A8 处的元素“响应”。我知道机器人框架会返回一个对象给我,但为什么我需要一个对象?如何搜索所需的值?
    • Parse 将 XML 的根元素作为对象返回。您使用Get Element Text 搜索所需的值,它将这个对象作为第一个参数,将元素的xpath 作为第二个参数。我想在这种情况下你不需要重复响应标签,所以第二行是:${link} = Get Element Text ${root} response/pg_redirect_url
    【解决方案2】:

    当您尝试执行必要的操作来查找项目时会发生这种情况。 但我仍然无法确定框架在宣誓什么。无论是在带有 url 的行上还是 ...

    *** Settings ***
    Library           Collections
    Library           String
    Library           RequestsLibrary
    Library           OperatingSystem
    Library           XML
    
    ${resp}=    Post Request    test.paybox.money    /init_payment.php    params=${params}
    ${XML}=    Parse XML    ${resp.text}
    ${text}=    Get Element Text    ${XML} /response/pg_redirect_url
    
    20190327 17:31:43.827 :  INFO : Post Request using : alias=test.paybox.money, uri=/init_payment.php, data=<empty>, headers=None, files=None, allow_redirects=True 
    20190327 17:31:43.827 :  INFO : 
    c:\python27\lib\site-packages\urllib3\connectionpool.py:847: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings
      InsecureRequestWarning)
    20190327 17:31:43.828 :  INFO : ${resp} = <Response [200]>
    20190327 17:31:43.829 :  INFO : ${XML} = <Element 'response' at 0x0426FCC8>
    20190327 17:31:43.830 :  FAIL : ParseError: not well-formed (invalid token): line 1, column 9
    20190327 17:31:43.830 : DEBUG : 
    Traceback (most recent call last):
      File "<string>", line 62, in parse
      File "<string>", line 38, in parse
    

    【讨论】:

    • 这里是我的粗心和我开了一个残酷的玩笑。
    • 我等待期望收到响应:ok3016806 pg_payment_id>test.paybox.money/… dataR8one3hLAkKwmx6C9a4b3f246a6f642c9dc80f5fdda5cac5,相反,我得到了http代码200。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多