如何在 SoapUI 中通过 XPath 从 XML 响应中保存全局 属性?

How can I save global property from XML response via XPath in SoapUI?

我加入了 SoapUI 作为 SOAP 客户端的团队,并且有一个生成访问令牌的身份验证步骤。每个后续请求都应使用此令牌填充。

这意味着我手动将旧的访问令牌替换为新的。

起初,我通过 File => Preference 创建全局 属性,这允许我每天执行 一次编辑 但我喜欢摆脱任何手册根本没有步骤。

我不完全了解 SoapUI,我们不使用测试套件/案例。

我如何创建一个点击执行请求的东西,通过 XPath 从响应中提取值并将其保存在全局属性中?

我遇到的问题是不知道如何使用 SoapUI。

所以我首先在项目下创建了TestSuit。作为 TestSuit 的第一步,我执行 SOAP 请求。

可以为 TestSuit 输入 TearDown 脚本:

def token = context.expand('${SessionCreateRQ#Response#//*:BinarySecurityToken/text()}')
com.eviware.soapui.model.propertyexpansion.PropertyExpansionUtils.globalProperties.setPropertyValue('sectoken', token)

或者像这样:

def token = context.expand('${SessionCreateRQ#Response#//*:BinarySecurityToken/text()}')
com.eviware.soapui.SoapUI.globalProperties.setPropertyValue('sectoken', token)

但随后的 运行s 不会更改全局变量的值,除非我从 File => Preference 对话框中将其删除。

所以我添加第二步 属性 Transfer 在 GUI 中我为第一个请求选择名称,属性 Response,路径语言 XPath 并输入表达式:

//*:BinarySecurityToken/text()

作为目标我选择全局,因为属性我的变量名:

现在,当我 运行 TestSuit ${#Global#sectoken} 填充了新值并可在任何 SoapUI 项目中访问时!!