如何通过JMeter中的XPath Extractor从响应中提取属性?

时间:2011-10-25 22:31:27

标签: html parsing xpath jmeter

我需要得到attr。通过JMeter从html中获取值componentIdinteractionstate,我尝试使用XPath提取器,但我不能这样做。

<html>
    <body>
        ...
        <form ...>
        <form class="UIForm" id="UINavigationComposer" action="/portal/intranet/home?portal:componentId=d934d0f3-d465-4c1d-880a-45f54b3c48e2&amp;interactionstate=JBPNS_rO0ABXcwAAt1aWNvbXBvbmVudAAAAAEAFFVJTmF2aWdhdGlvbkNvbXBvc2VyAAdfX0VPRl9f&amp;portal:type=action" method="post">
        <form ...>
        ...
    </body>
</html>

我尝试使用xpath查询:

/html/body/form@[id=UINavigationComposer]/@action

但获得错误:

  

断言失败消息:/ html / body / form @ [id = UINavigationComposer];   =&GT;对实体“portal:action”的引用必须以';'结尾分隔符。

1 个答案:

答案 0 :(得分:2)

我认为你的xpath查询有一点失误。 将 @ 置于 id 属性附近,如下所示

/html/body/form[@id=UINavigationComposer]/@action

或使用类似的东西:

//form[@id='UINavigationComposer']/@action

所以,第一步 - 使用RegEx或Xpath Extractor提取完整的动作值并将其存储在单独的jmeter变量(例如ACTION_TEST)中。 第二步 - 从componentId和interactionstate的变量值中提取。
jmeter 2.5中的RegEx Extractor(自2.3.2以来,afair)具有选项“Apply to ... Jmeter Variable” 您可以在“应用于... Jmeter变量”选项和相应的查询中添加2个额外的RegEx Extractor,每个$ {ACTION_TEST}:

componentId=(.+?);
interactionstate=(.+?);
  1. 提取器获取完整操作值FROM RESPONSE +保存到变量。
  2. 获取componentId值FROM VARIABLE的提取器。
  3. 获取交互状态值FROM VARIABLE的提取器。
  4. 希望这会奏效。