JMeter中HTML Link Parser Preprocessor工作原理及元素提取方法问询
HTML Link Parser Preprocessor 到底是怎么工作的?
咱先从基础说起:这个前置处理器是专门用来解析HTTP响应里的HTML内容,提取链接元素的工具。它的工作流程很清晰:
- 它会在你的HTTP请求采样器拿到响应之后自动触发,先把HTML响应转换成可解析的DOM结构。
- 默认情况下,它会扫描所有
<a>标签的href属性,把这些链接提取出来。 - 提取后的链接会被存到JMeter变量里——默认命名是
link_1、link_2……一直到link_N,同时还有个links变量会告诉你总共提取到了多少个链接。 - 你可以用这些变量来驱动后续的请求,比如循环遍历所有链接做爬取或者验证。
怎么检索HTML响应中的所有链接?
其实很简单:
- 如果你用HTML Link Parser Preprocessor,默认就会提取所有
<a>标签的href。要是你想更明确,可以在Link Filter输入框里填.*,这个正则表示匹配任意链接,就会把页面里所有符合的a标签href都捞出来。 - 提取完成后,你可以用
${link_1}、${link_2}这样的变量直接调用,${links}能拿到链接总数,方便做循环逻辑。
提取图片源、下拉框、单选按钮等其他元素?
这里得说清楚:HTML Link Parser Preprocessor是专门为链接(a标签href)设计的,要提取其他元素,咱得换更灵活的工具——CSS Selector Extractor或者正则表达式提取器,其中CSS Selector更推荐,因为它基于DOM结构,比正则更稳定,不容易因为HTML格式微调失效。
下面给你举几个常用场景的配置方法:
提取图片源(img标签的src属性)
用CSS Selector Extractor的话:
- Reference Name:给变量起个名,比如
image_srcs - CSS Selector Expression:写
img(匹配所有img标签) - Attribute:填
src(要提取的属性) - Match No.:设为
-1(表示提取所有匹配到的元素,而不是只取第一个)
配置完后,你会得到${image_srcs_1}、${image_srcs_2}……还有${image_srcs_matchNr}存总数。
提取下拉框(select)的选项
- 提取选项文本:CSS Selector写
select option,Attribute填text - 提取选项的value属性:CSS Selector写
select option,Attribute填value
同样Match No.设为-1就能拿到所有选项。
提取单选按钮(input type="radio")
- 提取单选按钮的value值:CSS Selector写
input[type="radio"],Attribute填value - 提取单选按钮的分组name:Attribute改成
name就行
如果页面里有多个单选按钮组,还可以给CSS Selector加更具体的条件,比如input[name="gender"][type="radio"]来精准匹配某一组。
要是你用正则表达式的话,也能实现,但需要写对应的正则规则,比如提取img的src可以用<img[^>]+src="([^"]+)",模板填$1$,Match No.设-1。不过还是那句话,正则对HTML格式变化更敏感,能不用就优先选CSS Selector。
内容的提问来源于stack exchange,提问作者shubham saini
相关产品推荐
相关产品推荐

