当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这时候就需要用到关联处理。 JMeter可以通过“后置处 理器”中的一些组件来处理关联。
常用的关联方法:
- 正则表达式提取器
- XPath提取器
- JSON提取器
1、正则表达式提取器
引用名称:下一个请求要引用的参数名称,如填写title,则可用${title}引用它
正则表达式 ():括起来的部分就是要提取的。
- .:匹配任何字符串。
- +:一次或多次。
- ?:不要太贪婪,在找到第一个匹配项后停止。
- 模板:用$$引用起来,如果在正则表达式中有多个正则表达式,则可以是$2$$3$等等,表示解析到的第几个值给title。如: $1$表示解析到的第1个值
- 匹配数字:0代表随机取值,-1代表全部取值,1代表取第一个值
- 缺省值:如果参数没有取得到值,那默认给一个值让它取。
2、Xpath提取器
Xpath常用方法详解:
- 基础语法:
表达式 | 描述 | 举例 |
---|---|---|
node_name | 选取此节点的所有子节点。 | 无 |
/ | 绝对路径匹配,从根节点选取。 | 无 |
// | 相对路径匹配,从所有节点中查找当前选择的节点,包括子节点和后代节点,其第一个 / 表示根节点。 | //li |
. | 选取当前节点。 | 无 |
.. | 选取当前节点的父节点。 | 无 |
@ | 选取属性值,通过属性值选取数据。常用元素属性有 @id 、@name、@type、@class、@tittle、@href。 | //a[@class="参数"] |
- xpath通配符:
通配符 | 描述说明 | 举例 |
---|---|---|
* | 匹配任意元素节点 | //li/* |
@* | 匹配任意属性节点 | //li/@* |
node() | 匹配任意类型的节点 | //li/node() |
- 多路径匹配
xpath表达式1 | xpath表达式2 | xpath表达式3
//ul/li[@class="book2"]/p[@class="price"]|//ul/li/@href
- 进阶用法
1、contains(包含某内容)
contains通常配合text一起使用,//a[contains(text(), '关闭')]
2、starts-with(以某内容开头)
3、or(或)
4、and(与)
5、text(包含某文本)
contains通常配合text一起使用,//a[contains(text(), '关闭')]
6、ancestor(查找节点前)
首先查找到在ancestor声明之前的那个元素,然后将这个元素设为顶端节点,最后查找这个节点内所有符合规则的元素
7、following(查找节点后)
8、following-sibling(当前节点之后的所有同级节点)
9、preceding-sibling(当前节点之前的所有同级节点)
3、JSON提取器
4、跨线程组参数关联
1、提取关联参数
2、函数助手生成需要关联的参数全局变量函数,属性名称为设置全局变量名称,value of properties为提取的参数名
3、使用BeanShell取样器设置全局参数
4、函数助手生成提取关联参数的函数
5、在HTTP请求中需要关联参数的地方粘贴此函数