如何在空手道变量中设置元素 xml 的属性值?

How to set attribute value of element xml in a variable in karate?

我正在尝试在空手道的变量中设置元素 xml 的属性值,如下所示:

order.xml file
 <Task>   
   <PrimaryTask ref="S2"></PrimaryTask> 
 </Task>

从上面的xml例子中,我将获取@ref的属性值并将其设置到一个名为“act_ref”的变量中,如下:

Scenario: Sample Code for checking
  Given def order = read('../order.xml')
  * def act_ref = get order //..//Task/PrimaryTask/@ref
  * print 'the value of act_ref is:', act_ref
  And xml act_TaskInfo = get order //Request/SearchBy/Tasks/Task[@subjectID=act_ref]

并在此处登录:

13:50:40.346 [ForkJoinPool-1-worker-3] INFO com.intuit.karate - [print] the value of act_primary_subject_ref is: S2  
TC1_TC12.feature:12 - xpath does not exist: //Request/SearchBy/Tasks/Task[@taskID=act_ref] on client_order

可以看到路径“//Request/SearchBy/Tasks/Task[@taskID=act_ref]”中的变量“act_ref”无法调用正确的值。所以如果你知道如何在空手道的变量中设置元素 xml 的属性值,请帮助我?谢谢!

我的预期是://Request/SearchBy/Tasks/Task[@taskID='S2'],'S2' 是 act_ref 的值。

参考文档,使用karate.xmlPath() API:https://github.com/karatelabs/karate#advanced-xpath

这是一个简短的例子:

* def attrName = 'S2'
* def payload = <Task><PrimaryTask ref="S2">foo</PrimaryTask></Task>
* def value = karate.xmlPath(payload, "//*[@ref='" + attrName + "']")
* assert value == 'foo'