如何使用Jmeter中的正则表达式提取器从以下服务响应中获取数据?

时间:2015-04-10 10:32:51

标签: regex jmeter

如何使用Jmeter中的正则表达式提取器从以下服务响应中获取数据?

提取令牌ID:

<ValidateUserResponse xmlns="http://tempuri.org/"><ValidateUserResult xmlns:a="http://schemas.datacontract.org/2004/07/ISOS.Medtrack.Mobile.Entity" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><a:ErrorKey i:nil="true"/><a:ErrorMessage i:nil="true"/><a:SystemId>0</a:SystemId><a:Type>0</a:Type><a:status>SUCCESS</a:status><a:IsAuthenticated>true</a:IsAuthenticated><a:IsDashboardLanding>true</a:IsDashboardLanding><a:IsEmployee>true</a:IsEmployee><a:IsMobileAppEnabled>true</a:IsMobileAppEnabled><a:IsPwdChgRqd>false</a:IsPwdChgRqd><*a:TokenID>**9de2dbfbcc94241002f57275e8dc78e60f26baabc05c1eebe39088d02e6e454f***</a:TokenID><a:UserStatus>ACTIVE</a:UserStatus></ValidateUserResult></ValidateUserResponse>

3 个答案:

答案 0 :(得分:0)

理论上你可以用正则表达式来做,但是我宁愿选择XPath Extractor来处理XML数据。

按照以下步骤提取TokenID值:

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

    xpath.namespace.config = my.properties

  2. 在同一位置创建“my.properties”文件并在其中添加下两行:

    a=http://schemas.datacontract.org/2004/07/ISOS.Medtrack.Mobile.Entity
    i=http://www.w3.org/2001/XMLSchema-instance
    
  3. 重新启动JMeter

  4. 将XPath Extractor添加为返回该XML的请求的子项
  5. 按如下方式配置XPath Extractor:

    • 选中“使用命名空间”框
    • //a:TokenID/text()行放入“XPath查询”输入
    • 将“参考名称”设置为有意义的内容,即TokenID
  6. 在XPath Extractor执行后,您应该能够将提取的值作为${TokenID}访问。

    希望这会有所帮助。

答案 1 :(得分:0)

虽然不应该在XML案例中使用Regex,因为这是一种不好的做法。 但是在实际性能测试中应避免使用XPath Extractor,因为与Regex相比,它们性质较重。

XPath构建一个DOM树,因此它会消耗CPU和内存,并且在性能测试期间可能会耗尽内存或使CPU过载,从而导致无效结果。因此,尽可能选择正则表达式提取器。

简单的正则表达式可以是,

TokenID>\*\*(\w+)\*\*\*

提取的值可以用作$ 1 $。

答案 2 :(得分:0)

解决XPath Extractor中名称空间问题的最佳方法,那就是使用impruved iXpath(改进的jmeter xpath插件)

http://sourceforge.net/p/i-jmeter-xpath/wiki/Home/