2017-01-03 101 views
0

在应用程序中,我测试的真实性令牌在用户登录后发生更改 - 所以我必须提取令牌两次(登录后一次,登录后第二次)。我使用正则表达式提取器。jmeter - 多个令牌提取

第一次(登录时)它工作正常。

第二次(登录后)它不提取新的令牌 - 随后的POST发送给定的引用名称(来自正则表达式提取器)而不是提取的令牌。

我在两个提取器中使用不同的引用名称。这两个页面具有相同的源和令牌以同样的方式定义:

<meta content="authenticity_token" name="csrf-param" /> 
<meta content="g/bsiegqqexUreoJdRbogKSpw6ZJ7O86fEUPESolrpc=" name="csrf token" /> 

于是我就用在这两种情况下相同的正则表达式:

name="authenticity_token".*value="(.+)" 

但是,正如我所说的,它只能为第一个标记。

任何帮助表示赞赏,并提前

+0

可以请你共享测试计划,突出显示RegExExtractors和问题不明确?以及需要提取令牌的HTTP响应。在问题中,给出的内容和正则表达式不匹配(在竞争网中没有值字段)。 –

回答

1

简单don't use regular expressions to parse HTML感谢。响应中的任何轻微标记更改,换行符,空白,属性顺序更改等,您什么也得不到。

你必须设计为与HTML响应类型做两份漂亮的后处理器:

  1. CSS/JQuery Extractor

    相关的配置看起来像:

    • CSS/jQuery表达式:meta[name=csrf token]
    • 属性名称:content
  2. XPath Extractor

    • XPath查询看起来像://meta[@name='csrf token']/@content
    • 如果你的反应是不符合XHTML你可能需要打勾Use Tidy (tolerant parser)
+0

谢谢!看起来像有人不得不让我看到明显的事情。 –