robotframework - XML 库能够读取 XML 但不能写入/更改 XML
问题描述
我正在使用 RobotFramework 和 XML 库编写一个测试用例,我想在其中更改元素的文本。
我也在使用 DataDriver 来填写我的论点。
我有一些基本代码,我想在其中更改文本元素,然后我试图确认更改是否正确完成:
Test to Change one value in XML
[Arguments] ${DEBMEMRID} ${DEBBANKID} ${DEBCODEBRAND} ${DEBCOMPID} ${DEBCOMMAWLID} ${CREMEMID} ${CREMEMTYPE} ${CREBANKID} ${CRECODEBRAND} ${CRECOMPID} ${CRECOMID}
${root}= Parse XML ${XMLFile}
Set Element Text ${XMLFile} ${DEBMEMRID} xpath=./Payment/Payment_Instruction/Debited_Party/Member/Member_ID
Element Text Should Be ${XMLFile} ${DEBMEMRID} xpath=./Payment/Payment_Instruction/Debited_Party/Member/Member_ID
${text} Get Element Text ${XMLFile} xpath=./Payment/Payment_Instruction/Debited_Party/Member/Member_ID
因此,“元素文本应该是”成功地读取 XML,因为文本案例进入失败。
------------------------------------------------------------------------------
TestID 2 | FAIL |
400003 != 400001
------------------------------------------------------------------------------
所以在 XML 中,原始值为 400003,而我要添加的值为 400001。
这是这部分代码的日志记录/输出:
<kw library="XML" name="Parse Xml">
<doc>Parses the given XML file or string into an element structure.</doc>
<arguments>
<arg>${XMLFile}</arg>
</arguments>
<assign>
<var>${root}</var>
</assign>
<msg level="INFO" timestamp="20190827 12:54:54.202">${root} = <Element 'Document' at 0x03850240></msg>
<status starttime="20190827 12:54:54.201" status="PASS" endtime="20190827 12:54:54.203"></status>
</kw>
<kw library="XML" name="Set Element Text">
<doc>Sets text and/or tail text of the specified element.</doc>
<arguments>
<arg>${XMLFile}</arg>
<arg>${DEBMEMRID}</arg>
<arg>xpath=./Payment/Payment_Instruction/Debited_Party/Member/Member_ID</arg>
</arguments>
<status starttime="20190827 12:54:54.203" status="PASS" endtime="20190827 12:54:54.204"></status>
</kw>
<kw library="XML" name="Element Text Should Be">
<doc>Verifies that the text of the specified element is ``expected``.</doc>
<arguments>
<arg>${XMLFile}</arg>
<arg>${DEBMEMRID}</arg>
<arg>xpath=./Payment/Payment_Instruction/Debited_Party/Member/Member_ID</arg>
</arguments>
<msg level="FAIL" timestamp="20190827 12:54:54.205">400003 != 400001</msg>
<status starttime="20190827 12:54:54.204" status="FAIL" endtime="20190827 12:54:54.206"></status>
</kw>
为了使 XML 库能够适应文件,是否需要设置权限之类的东西?我该如何设置呢?
解决方案
${root}= Parse XML ${XMLFile}
Set Element Text ${root} ${DEBMEMRID} xpath=./Payment/Payment_Instruction/Debited_Party/Member/Member_ID
Element Text Should Be ${root} ${DEBMEMRID} xpath=./Payment/Payment_Instruction/Debited_Party/Member/Member_ID
在将 XML 解析给您之后,${root}
您应该设置元素文本并进行比较${root}
。在您的示例中,您解析了${XML_FILE}
into${root}
但将所有后续关键字指向${XML_FILE}
.
如果你想用新信息覆盖旧的 XML 文件,你可以使用关键字Save Xml
:
Save XML ${root} ${XML_FILE}
完整的机器人框架 XML 库文档可以在这里找到: https ://robotframework.org/robotframework/latest/libraries/XML.html
推荐阅读
- sql-server - 外键的审计触发器
- stm32 - STM32链接固件最终二进制的crc值
- sql - 使用多个 AND 运算符的 MS Access VBA SQL 查询失败?
- wpf - 自定义视图模型绑定中的自定义事件
- python - 如何使用 pygame 制作退出框?
- php - Wordpress have_posts() 只返回一页
- android - Retrofit2 无法使用 Multipart 或 RequestBody 上传图像
- azure-ad-b2c - 与 Azure B2C 集成的 Dynamic 365 门户中的语言自定义
- c - 为什么我可以从另一个文件调用一个函数(带有警告),但不能在没有声明的情况下使用另一个文件中的变量?
- xaml - 如何从另一个 xaml 代码隐藏访问内容页面中的 SwipeView 打开方法