Jmeter Xpath和正则表达式

时间:2015-08-30 14:39:36

标签: java regex xpath jmeter

我需要从以下代码中提取jsessionid值仅8969424C7F388504711149044AB03FE9

<input type="hidden" name="execution" value="e1s1" />
 <input type="hidden" name="_eventId" value="submit" />
 <a id="forgotP" href='forgotPassword?service=https%3A%2F%2Fbg-cn-host%3A8443%2Fcloudsolutions%2Fj_spring_cas_security_check%3Bjsessionid%3D8969424C7F388504711149044AB03FE9'>Forgot password?</a>
 <input class="btn-submit" name="submit" value="Log In

我尝试了以下选项,但没有运气

//*[starts-with(@href,'forgotPassword')]/substring-after(@href, 'jsessionid%3D')

substring-after(/ @ href,'jsessionid%3D')

//*[@id='forgotP']/contains(substring-after(., 'jsessionid%3D'))

name="(.+)"\stype="hidden"value="(.+)"

需要Xpath和正则表达式

2 个答案:

答案 0 :(得分:1)

正确的XPath表达式将是:

substring-after(//a[starts-with(@href,'forgot')]/@href,'jsessionid%3D')

如果您的回答不符合XML / XHTML,请确保&#34;使用Tidy(宽容解析器)&#34;框被选中

您可以使用View Results Tree侦听器针对响应数据测试XPath表达式。

Xpath Extractor

但是我相信你可以做得更轻松。鉴于JSESSIONID只是一个cookie,它应该由HTTP Cookie Manager完美处理,除了已知XPath Extractor是资源密集型的,建议尽可能避免使用它。

  1. 将以下行添加到 user.properties 文件(位于JMeter安装的/ bin文件夹下)

    CookieManager.save.cookies=true
    
  2. 重新启动JMeter
  3. 将HTTP Cookie管理器添加到测试计划
  4. 只要您需要JSESSIONID值,就可以使用${COOKIE_JSESSIONID}变量
  5. 有关详细信息,请参阅Using the HTTP Cookie Manager指南。

答案 1 :(得分:0)

试试这个Regex,

3Bjsessionid\%3D(\w+)'>Forgot password

3Bjsessionid\%3D([0-9A-Z]+)'>Forgot password

假设您在JMeter中知道正则表达式提取器,我不会给出JMeter正则表达式快照。对于Xpath,我认为您的Xpath查询是正确的。