jmeter xpath通过文本和父元素定位元素

时间:2018-12-21 10:16:36

标签: xpath jmeter

我得到一个xml,并希望通过XPath Extractor提取一个元素的值,但是它在jmeter中返回“ Assertion failure message:-1”。

<flag>
    <sample>123</sample>
    <others>...</others>
    <target>a test sample</target>
</flag>
<flag>
    <sample>1234</sample>
    <others>...</others>
    <target>a test sample</target>
</flag>

为了获取<target>为123的元素<sample>的文本,已尝试了几种方法,但均失败了:

  • //flag[sample='123']/target
  • //sample[.='123']/../target
  • //sample[@value='123']/../target/@value
  • //sample[text()='123']/../target/text()

是否可以捕获元素<target>的值?

3 个答案:

答案 0 :(得分:0)

您需要确定要执行的操作,这与获取文本和获取元素之间有很大的区别。

要查找元素,您至少有3个选项:

  1. 标志中找到目标,该目标具有一个带有123个文本的样本子元素
    //flag[./sample[textt()='123']]/target

  2. 找到包含123个文本的样本,转到父级并找到目标
    //sample[textt()='123']/../target

  3. 找到带有文本123的样本,并获得 target 兄弟姐妹
    this you need to discover yourself

现在,您具有可以使用的object元素。 如果要输入文本,则需要添加/text()

答案 1 :(得分:0)

您应该使用类似的内容:

//sample[text()='123']/parent::*/target/text()='a test sample'

演示(假设XPath Tester mode of the View Results Tree侦听器):

enter image description here

参考文献:

答案 2 :(得分:0)

谢谢大家,我不知道为什么所有解决方案都失败了;而是使用正则表达式提取器。也许XPath Extractor无法处理这种情况。