正则表达式提取器
使用 edge 浏览器 打开 网站的登录页面 【右键】—【检查】
- 找到 网络面板 ,勾选 【保留日志】
- 点击【登录】连接 在网络中找到 signin 对应的请求
- 查看登录的请求地址,请求方法,响应结果。
- 清空日志,再使用自己的用户名和密码进行登录操作
以及对应的表单数据
如果浏览器中没有 网络选项,通过更多工具打开。
根据上面的登录操作。每次登录的时候发现都有一个 _csrf
参数,并且每次都不一样,
通过观察得知, 在打开登录页面的时候,在页面中会生成一个 唯一的值,在登录时需要添加上这个值。
在JMeter 中如何进行上下游传参。
在JMeter 中可以 设置登录场景。
- 打开登录页面,将登录页面中
csrf
提取出来设置 变量 - 登录的时候 使用上游接口中添加的变量。
对应的Jmx文件
web页面的登录操作.jmx
提取正则表达式
要提取对应的值
官网文档: https://jmeter.apache.org/usermanual/regular_expressions.html
根据官网文档
- 找到这个值特征,
name='_csrf' value='tqFSb3cS-2eRwEaAXfnpqDuGaSoXz9WSaB-s'
- 将要提取的值 更换为
(.+?)
,即正则表达式name='_csrf' value='(.+?)'
设置正则表达式
在上游接口中 【打开登录页面】—【右键】—【添加】—【后置处理器】—【正则表达式提取器】
输入正则表达式的对应的值
引用变量
在下游接口中 通过使用 ${csrf}
引用变量的方式来进行调用。
执行,可以看到已经成功将值提取出来了。
web页面的登录操作-正则表达.jmx
虽然已经可以成功提取到 csrf 对应的值。但是服务器报了500的错误,用户并没有登录成功。
添加Cookie 管理器
在线程组上 添加 【HttpCookie 管理器】
cookie 管理器会自动保存服务器返回给客户端的Cookie。就可以实现登录,在这里大家需要注意,在做web端的测试时,需要添加Cookie管理器,几乎所有Web端应用都有cookie机制。
web页面的登录操作-添加cookie管理器.jmx
这里的Web端页面测试与直接的接口测试稍有不同,需要大家注意。
练习
模拟cnode社区web 网页端操作。 http://47.100.175.62:3000/signin
- 用户登录到网站 使用用户名 test1 密码 123456 登录
- 用户发布一个话题
需要注意 发布话题的时候也有一个 csrf 值
线程组-模拟用户在Web页面上发帖.jmx
调试取样器 (Debug Sampler)
打开线程组 添加 调试取样器
在运行的过程中,可以看到运行过程中 提取到的变量值。