如何在JMeter中利用前一页响应作为下一页请求的输入参数?
在JMeter中提取页面出发城市并参数化下一页请求的步骤
没问题,我来一步步教你实现这个需求,把前一页页面里的出发城市提取出来,作为参数传给下一页的请求:
第一步:添加正则表达式提取器(最常用的文本提取方式)
首先找到返回目标页面的那个HTTP请求,右键它选择 添加 → 后置处理器 → 正则表达式提取器,然后配置以下参数:
- 引用名称:输入一个变量名,比如
departCity(后面要靠这个变量调用提取到的值) - 正则表达式:根据你页面源码里出发城市的位置来写。从你提供的截图看,出发城市是Acapulco,假设它在类似选中的标签里,比如
<a class="selected-depart" ...>Acapulco</a>,那正则可以写:class="selected-depart".*?>(.*?)<小提示:如果不确定正则怎么写,可以用JMeter「查看结果树」里的「正则表达式测试器」功能,把页面源码贴进去调试,直到能准确匹配到目标城市
- 模板:填
$1$(表示取正则表达式里第一个括号捕获到的内容) - 匹配数字:填
1(取第一个匹配到的结果,确保只拿到你要的那个出发城市) - 缺省值:可以填
NOT_FOUND(如果提取失败,这个值会被代入,方便排查问题)
第二步:在后续请求中引用提取到的变量
找到你要发送的下一页请求,把它的URL改成:
/findflight?depart=${departCity}
这样JMeter在运行时,会自动把 ${departCity} 替换成之前提取到的出发城市(比如Acapulco),生成符合要求的请求URL。
备选方案:用CSS选择器/XPath提取器(如果页面结构清晰)
如果你的页面HTML结构很规范,也可以用更直观的提取方式:
- CSS选择器提取器:添加后,在「CSS选择器表达式」里写类似
a.selected-depart::text,引用名称同样设为departCity - XPath提取器:添加后,在「XPath查询」里写
//a[@class='selected-depart']/text(),同样设置引用名称
验证是否成功
运行测试计划后,查看「查看结果树」里的下一页请求,检查URL里的depart参数是否正确带上了提取到的城市。如果显示NOT_FOUND,说明正则/选择器写得不对,回去调整匹配规则就好。
内容的提问来源于stack exchange,提问作者Akhil Kumar Patnaik
相关产品推荐
相关产品推荐

