You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Robot Framework中Soap调用时XML元素动态设为变量的实现方法

解决方案:Robot Framework动态修改XML元素内容并用于SOAP测试

完全可行,你的问题主要出在两个点:一是误用了Set Element Attribute(该关键字用于修改XML元素的属性,而非元素内的文本内容);二是修改后的XML没有重新保存或转换为可用于SOAP请求的格式。以下是具体实现步骤:

前置准备

  1. 确保已安装必要库:
    • robotframework-xml:用于XML解析与操作
    • robotframework-faker:用于生成动态测试数据
    • robotframework-operatingsystem:用于文件读写(可选,若需保存修改后的XML)
  2. 先修正你原XML文件的语法错误:
    <?xml version="1.0" encoding="UTF-8"?>
    <datas>
        <data id="person">
            <phone>83910388</phone> <!-- 原标签错误为</price> -->
            <name>Test</name>
        </data> <!-- 原标签错误为</data id> -->
    </datas>
    

具体实现代码

*** Settings ***
Library    XML
Library    Faker
Library    OperatingSystem

*** Test Cases ***
Dynamic XML for SOAP Test
    # 1. 生成动态测试数据
    ${PHONE}    Faker.Phone Number    phone_number
    ${NAME}     Faker.Name          name

    # 2. 解析XML文件
    ${xml_obj}    Parse Xml    ${path_to_file}

    # 3. 定位并修改元素文本内容
    # 修改phone元素
    ${phone_elem}    Get Element    ${xml_obj}    //datas/data/phone
    Set Element Text    ${phone_elem}    ${PHONE}
    # 修改name元素
    ${name_elem}     Get Element    ${xml_obj}    //datas/data/name
    Set Element Text    ${name_elem}    ${NAME}

    # 4. 可选:将修改后的XML保存到文件(若后续需要读取文件发送请求)
    ${xml_str}    Convert To String    ${xml_obj}
    Write To File    ${path_to_modified_file}    ${xml_str}    encoding=UTF-8

    # 5. 直接使用修改后的XML发送SOAP请求(无需保存文件时用此方式)
    # ${soap_response}    SoapLibrary.Send Soap Request    ${xml_str}    ${soap_endpoint}

关键说明

  • Set Element Text:这是修改XML元素文本内容的正确关键字,而非Set Element Attribute(后者用于修改如data id="person"中的id属性)。
  • Convert To String:将XML对象转换为字符串格式,既可以保存为文件,也可以直接传入SOAP库的请求关键字中。
  • 若无需保存文件,可直接将转换后的字符串用于SOAP请求,跳过文件写入步骤。

内容的提问来源于stack exchange,提问作者evojd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 03:50:17