正则表达式提取器

使用 edge 浏览器 打开 网站的登录页面 【右键】—【检查】
image.png

  1. 找到 网络面板 ,勾选 【保留日志】

image.png

  1. 点击【登录】连接 在网络中找到 signin 对应的请求

image.png

  1. 查看登录的请求地址,请求方法,响应结果。

image.png

  1. 清空日志,再使用自己的用户名和密码进行登录操作

image.png
以及对应的表单数据
image.png


如果浏览器中没有 网络选项,通过更多工具打开。
image.png

根据上面的登录操作。每次登录的时候发现都有一个 _csrf 参数,并且每次都不一样,
通过观察得知, 在打开登录页面的时候,在页面中会生成一个 唯一的值,在登录时需要添加上这个值。

在JMeter 中如何进行上下游传参。

在JMeter 中可以 设置登录场景。

  1. 打开登录页面,将登录页面中 csrf 提取出来设置 变量
  2. 登录的时候 使用上游接口中添加的变量。

对应的Jmx文件
web页面的登录操作.jmx


提取正则表达式

要提取对应的值
image.png
官网文档: https://jmeter.apache.org/usermanual/regular_expressions.html
根据官网文档

  1. 找到这个值特征,name='_csrf' value='tqFSb3cS-2eRwEaAXfnpqDuGaSoXz9WSaB-s'
  2. 将要提取的值 更换为 (.+?) ,即正则表达式 name='_csrf' value='(.+?)'

image.png

设置正则表达式

在上游接口中 【打开登录页面】—【右键】—【添加】—【后置处理器】—【正则表达式提取器】
image.png
输入正则表达式的对应的值
image.png

引用变量

在下游接口中 通过使用 ${csrf}引用变量的方式来进行调用。
image.png
执行,可以看到已经成功将值提取出来了。
image.png

web页面的登录操作-正则表达.jmx
虽然已经可以成功提取到 csrf 对应的值。但是服务器报了500的错误,用户并没有登录成功。


添加Cookie 管理器

在线程组上 添加 【HttpCookie 管理器】
image.png
cookie 管理器会自动保存服务器返回给客户端的Cookie。就可以实现登录,在这里大家需要注意,在做web端的测试时,需要添加Cookie管理器,几乎所有Web端应用都有cookie机制。
image.png
web页面的登录操作-添加cookie管理器.jmx


这里的Web端页面测试与直接的接口测试稍有不同,需要大家注意。

练习

模拟cnode社区web 网页端操作。 http://47.100.175.62:3000/signin

  1. 用户登录到网站 使用用户名 test1 密码 123456 登录
  2. 用户发布一个话题

image.png
需要注意 发布话题的时候也有一个 csrf 值
线程组-模拟用户在Web页面上发帖.jmx

调试取样器 (Debug Sampler)

打开线程组 添加 调试取样器
image.png
在运行的过程中,可以看到运行过程中 提取到的变量值。
image.png

线程组-模拟用户在Web页面上发帖-完成.jmx