提问人:MiGo 提问时间:12/17/2020 最后编辑:MiGo 更新时间:12/23/2020 访问量:243
如何在 SOAPUI 的命名空间中声明通配符?
how to declare wildcard in namespaces in soapui?
问:
我有两个环境。本地和云。在云中,我得到的结果命名空间为
<ServiceAvailability **xmlns="http://types.infrastructure.abc.de"**>
<BackendSystem>*</BackendSystem>
<BackendName>Domain Server Release GIT commit hash</BackendName>
<Status>OK</Status>
<URL>*</URL>
<Timestamp>*</Timestamp>
</ServiceAvailability>
在本地,我没有命名空间
<ServiceAvailability>
<BackendSystem>*</BackendSystem>
<BackendName>Domain Server Release GIT commit hash</BackendName>
<Status>OK</Status>
<URL>*</URL>
<Timestamp>*</Timestamp>
</ServiceAvailability>
我在 soapui 中使用 xpath 作为
declare namespace ns1='http://types.infrastructure.abc.de';
/ns1:ServiceAvailabilities/ns1:ServiceAvailability[ns1:BackendName='Domain Server Release GIT commit hash']
因此,它传递了云,但不是本地的,因为有命名空间。那么我怎样才能使我的测试用例泛泛而化,其中涉及 * 作为命名空间(基本上忽略命名空间)soapui 中有 as 选项说忽略命名空间前缀,但是当勾选时它仍然不起作用???如何在我的命名空间声明中使用通配符???
答:
1赞
Jack Fleeting
12/17/2020
#1
处理它的一种方法是改用本地名称。因此,以下内容应该适用于您问题中的两个版本的 xml:
//*[local-name()='ServiceAvailability']/*[local-name()="BackendName"['Domain Server Release GIT commit hash']]
评论
0赞
MiGo
12/17/2020
实际上,我在单个 ServiceAvailabilities 中有许多 ServiceAvailability 元素,所以我得到了“给定响应中的多个匹配项”
0赞
Jack Fleeting
12/17/2020
@MiGo 好吧,我只能使用问题中的 xml 示例,而不能使用现实生活中的:)
0赞
Gaurav Khurana
12/21/2020
#2
下面的代码可以帮助你,这个时髦的代码可以在有或没有 soapui 命名空间的情况下使用。
我用 2 个不同的响应运行了相同的代码,
在下面的代码中,您需要更改的是“REST_Request”< - 测试步骤的名称
def GroovyUtils=new com.eviware.soapui.support.GroovyUtils(context)
def request=GroovyUtils.getXmlHolder("REST_Request#Response")
def backendName = request.getNodeValue("/*:ServiceAvailability/*:BackendName")
log.info backendName
0赞
SiKing
12/23/2020
#3
若要使用通配符命名空间,请使用星号代替命名空间。因此,对于您的示例,它将是:*
/*:ServiceAvailabilities/*:ServiceAvailability[*:BackendName='Domain Server Release GIT commit hash']
请注意,没有声明!declare
评论