一、XPath2 提取器(XPath2 Extractor)参数说明
可以采用 Xpath 语法提取所需要的值,功能非常强大(注意取样器返回必须为xml);底层采用 saxon-he 实现,语法参考:https://www.w3school.com.cn/xpath/index.asp 函数:http://saxon.sourceforge.net/saxon7.9.1/functions.html
右键 >>> 添加 >>> 后置处理器 >>> XPath2 提取器(XPath2 Extractor)
Apply to
-
Main sample and sub-samples:匹配范围包括当前父取样器并覆盖子取样器
-
Main sample only:默认;匹配范围是当前父取样器
-
Sub-samples only :仅匹配子取样器
-
JMeter Variable Name to use:支持对 Jemter变量值进行匹配(输入框内可输入jmeter的变量名称)
Extraction properties
-
引用名称(Name of created variables):请求要引用的变量名称,如填写 result_num
-
XPath query:用于提取值的XPath表达式
-
匹配数字(0代表随机)(Match No. (0 for Random)):0 代表随机取值,n取第几个匹配值,-1匹配所有;比如:取1表示报文中的第1个对象匹配,取2表示报文中的第2个对象匹配
-
缺省值(Default Value):如果参数没有取得到值,那默认给一个值让它取
-
Namespaces aliases list (prefix=full namespace, 1 per line):命名空间别名列表。就是这个功能,能让使用命名空间比使用旧的XPath提取器更方便。关于命名空间含义,可以看官方文档:XML 命名空间,但是写的不够详细,详细的参考这里:XML 命名空间(XML Namespaces)介绍以及节点读取方法。由于XPath2对于表达式的要求比较严格,对于带命名空间的XML(包括默认的命名空间),使用不带命名空间前缀的表达式是查询不到结果的;每行一个
-
Return entire XPath fragment instead of text content?:返回文本内容的整个XPath片段
二、准备工作
百度:https://www.w3school.com.cn/example/xmle/cd_catalog.xml
- 进入网页后,右键检查或按F12,打开调试工具
如图,使用XPath2 提取器(XPath2 Extractor)获取 <TITLE>Empire Burlesque</TITLE>
注:这个地址有时会返回304状态码,网页多刷新几次,让其从缓存中获取数据。测试时,需使用 HTTP缓存管理器 获取缓存
三、测试计划
(1)、测试计划右键 <<< 添加 <<< 配置元件 <<< HTTP缓存管理器
(2)、网页复制全部的请求标头
(3)、测试计划右键 <<< 添加 <<< 配置元件 <<< HTTP信息头管理器
- 在网页调试中,复制全部的请求标头,点击从剪切板添加按钮,即可全部自动添加好
此请求头必须和网页中的保存一致,且网页不可刷新,否则会改变
(4)、测试计划右键 <<< 添加 <<< 配置元件 <<< HTTP请求默认值
-
协议:https
-
服务器名称或IP:www.w3school.com.cn
-
端口号:无端口的话,https 默认端口为 443
-
内容编码:utf-8
(5)、测试计划右键 <<< 添加 <<< 线程(用户)<<< 线程组
(6)、线程组右键 <<< 添加 <<< 取样器 <<< HTTP请求
-
选择GET
-
路径:/example/xmle/cd_catalog.xml
(7)、HTTP请求右键 <<< 添加 <<< 后置处理器 <<< XPath2 Extractor
-
勾选 Main sample only
-
引用名称:xpath2
-
XPath query:CATALOG/CD/TITLE
语法参考:https://www.w3school.com.cn/xpath/index.asp
函数:http://saxon.sourceforge.net/saxon7.9.1/functions.html
- 匹配数字(0代表随机):-1
匹配所有
(8)、线程组右键 <<< 添加 <<< 监听器 <<< 查看结果树
(9)、线程组右键 <<< 添加 <<< 取样器 <<< 调试取样器
(10)、点击启动,点击查看结果树,查看HTTP请求
如图,可以看到 HTTP请求返回成功,响应数据下响应体中,数据正确
(11)、点击查看结果树中的调试取样器,查看响应数据下的响应体
xpath2=Empire Burlesque:获取到的变量值
xpath_X=<TITLE>Empire Burlesque</TITLE>:对应的每个个数的值
xpath2_matchNr=25:统计匹配的个数,一共25个