我正在使用 SOAPUI 进行 Web 服务测试。我想通过 groovy 脚本测试步骤进行 xml 解析。对于一个测试用例,我必须插入 xml 标签 [如 <Email><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="9ee6e7e4def9f3fff7f2b0fdf1f3" rel="noreferrer noopener nofollow">[email protected]</a></Email>
] 在 SOAP 请求中。
我可以使用 holder.setNodeValue(Xpath, Value)
将值设置为 xml 标记,使用相同的函数,我尝试在 SOAP 请求中插入 xml 标记,如 holder.setNodeValue(Xpath, "<Email><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="077f7e7d47606a666e6b2964686a" rel="noreferrer noopener nofollow">[email protected]</a></Email>")
。但在 SOAP 请求 xml 标记中设置为
"<Email><a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="38404142785f55595154165b5755" rel="noreferrer noopener nofollow">[email protected]</a></Email>"
由于这个问题,SOAP 请求无法识别该 xml 标记,因此该值无法在响应中反射(reflect)/更新。
如果我错误地使用了这个功能,请纠正我。等待任何人的回复..
最佳答案
发生这种情况是因为您正在调用 setNodeValue 方法。该方法将设置节点的值(可以是XML节点格式)。
理想情况下,您应该做的是如果节点已经存在(),则只需使用holder获取该节点并设置值。 或者
xpath = "//level1/level2/email"
holder.setNodeValue(xpath, "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a5dddcdfe5c2c8c4ccc98bc6cac8" rel="noreferrer noopener nofollow">[email protected]</a>")
或者最简单的是,在节点之间添加一个空属性值。
<Name>Test</Name>
${Property#TestValue}
<Phone>123123</Phone>
现在假设您想在姓名和电话之间添加电子邮件,请为该属性变量分配一些值。 如果没有,则将其留空。
关于groovy - 将 groovy 中的 xml 标签插入到 SOAPUI 中的 SOAP 请求中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11429654/