jmeter xpath найти элемент через текст и родитель - PullRequest
0 голосов
/ 21 декабря 2018

Я получаю XML и хочу извлечь значение одного элемента с помощью XPath Extractor, однако он возвращает «Сообщение об ошибке подтверждения: -1» в jmeter.

<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>, где <sample> равен 123, было опробовано несколько способов, но не удалось:

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

Есть ли способ получить значение элемента <target>?

Ответы [ 3 ]

0 голосов
/ 22 декабря 2018

Вы должны использовать что-то вроде:

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

Демонстрация (предполагает XPath Tester режима Дерево результатов слушатель):

enter image description here

Ссылки:

0 голосов
/ 09 января 2019

Спасибо всем, я не знаю, почему все решение не удалось;вместо этого работает экстрактор регулярных выражений.Возможно, XPath Extractor просто не может справиться с подобными случаями.

0 голосов
/ 21 декабря 2018

Вы должны быть уверены в действии, которое вы хотите выполнить, это большая разница между получением текста и получением элемента.

Для поиска элемента у вас есть как минимум 3 варианта:

  1. найти цель из флаг , у которого есть образец дочерний элемент с 123 текстом
    //flag[./sample[textt()='123']]/target

  2. найдите образец , содержащий 123 текста, перейдите к родителю и найдите target
    //sample[textt()='123']/../target

  3. найдите образец с текстом 123 и получите target sibling
    this you need to discover yourself

Теперь у вас есть объектэлемент, который вы можете использовать.Если вы хотите текст, то вам нужно добавить /text()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...