我想在SOAP UI中从请求到数据库(JDBC)获取数据。例如,我有这样的连接和请求:
在其他步骤中,我尝试从数据库中获取数据:
def get_iccid = context.expand('${DB_Get_Free_SIM#ResponseAsXml#//Results[1]/ResultSet[1]/Row[1]/ICC_ID[1]}');
log.info("iccid from database = " + get_iccid);
我没有得到任何东西。
答案 0 :(得分:1)
我认为问题出在XPath
上,尝试添加通配符以匹配任何名称空间:
//*:Results[1]/*:ResultSet[1]/*:Row[1]/*:ICC_ID[1]
在您的代码中:
def get_iccid =
context.expand('${DB_Get_Free_SIM#ResponseAsXml#//*:Results[1]/*:ResultSet[1]/*:Row[1]/*:ICC_ID[1]}');
请注意,如果只有一个<Results>
,<ResultsSet>
,<Row>
元素,则无需指定[1]
,因此,如果您的 JDBC 响应类似于:
<Results>
<ResultSet fetchSize="10">
<Row rowNumber="1">
<ICC_ID>someValue</ICC_ID>
</Row>
</ResultSet>
</Results>
您可以将XPath
简化为:
//*:Results/*:ResultSet/*:Row/*:ICC_ID
作为评论中的@Siking注释, JDBC TestStep 响应在<Row>
之前始终具有相同的结构,因此从//*:Row
开始是安全的,然后是XPath
可能更简单:
//*:Row/*:ICC_ID