Robot Framework中Soap调用时XML元素动态设为变量的实现方法
解决方案:Robot Framework动态修改XML元素内容并用于SOAP测试
完全可行,你的问题主要出在两个点:一是误用了Set Element Attribute(该关键字用于修改XML元素的属性,而非元素内的文本内容);二是修改后的XML没有重新保存或转换为可用于SOAP请求的格式。以下是具体实现步骤:
前置准备
- 确保已安装必要库:
robotframework-xml:用于XML解析与操作robotframework-faker:用于生成动态测试数据robotframework-operatingsystem:用于文件读写(可选,若需保存修改后的XML)
- 先修正你原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
相关产品推荐
相关产品推荐

