在 Jmeter 中,除了正则表达式可以用作关联,还有一种方式也可以做关联,那就是 XPath Extractor。它是利用 xpath 提取出关键信息,传递变量。
Jmeter 接口自动化交流扣扣群:704807680
添加一个后置处理器-XPath Extractor
Jmeter 接口自动化交流扣扣群:704807680
以百度热榜为例,我们做一次演练。对百度热搜我们发起一次请求,观察结果。
现在我想利用 xpath 把这些 url 都取出来,我们来写一个 xpath 表达式匹配一下。发现 url 都被匹配出来了。
//ul[@class="s-hotsearch-content"]//li//a//@href 具体是什么意思呢?意思就是通过 url>li>a>href 这四层标签进行逐级检索,找到 class="s-hotsearch-content"] 标签下的 url 对应的 li>a 标签下的所有 href,进行匹配
这里如果我想匹配到 href 标签下的文字标题怎么办?
Jmeter 接口自动化交流扣扣群:704807680
改一下表达式吧--//span[@class="title-content-title"],我们发现取出来都是标题,后面可以再进行拼接
现在表达式没有问题了,我们将添加的 xpath 提取器挂在 http 请求下面。添加一个 debug 查看结果,可以看到 debug 中已经获取到了这些 url
Jmeter 接口自动化交流扣扣群:704807680
我们可以添加两个 xpath 提取器,分别提取 url 和 title 进行拼装,运行查看结果
Jmeter 接口自动化交流扣扣群:704807680
Jmeter 接口自动化交流扣扣群:704807680
//*[@class,'A ']/@href 从根目录下定位所有 class=A 的 href
//*[@class,'A '] 从根目录下定位所有 class=A 标签内的文本
//*[contains(@class,'A ')] 从根目录下@class值中包含 A 的节点
substring-before(.//*[@class='A']/text(),'0') 返回根目录下 [@class='A']/text() 中第一个'0'前面的部分,如果不存在'0',则返回空值
substring-after(.//*[@class='A']/text(),'0') 返回根目录下 [@class='A']/text() 中第一个'0'后面的部分,如果不存在'0',则返回空值
Jmeter 接口自动化交流扣扣群:704807680