前景
接口或是压力测试jmeter是一个不错的选择,免费开源。一般来说接口返回或请求体类型相对来说json会多一些,其次html。针对不同的类型体,使用不同的提取方式会达事倍功半的效果。
常见类型 常用提取器 备注
json JSON Extractor,Regular Expression Extractor,Boundary Extractor 如果格式比较规范的话,首先JSON Extractor
xml Regular Expression Extractor,Boundary Extractor Regular Expression Extractor相对来说更好用些
html Regular Expression Extractor,XPath Extractor,CSS Selector Extractor,Boundary Extractor 含有列表,取列表中的值时用xpath extractor还是很方便的
网上已经有很多介绍json extractor,regular expression extractor。在此不介绍了,只对xpath extractor做个简单的介绍。
官方介绍:
xpath 提取器
这个测试元素允许用户使用XPath查询语言从结构化响应(XML或(X)HTML)中提取值
如果JMeter 5.0+版本,请使用XPath2 Extractor,它提供了更好、更简单的名称空间管理、更好的性能和对XPath 2.0的支持。
XPath提取器的控制面板截图
参数说明
属性 描述 是否必选/填项
name 线程组树结构中显示的此元素控件的描述性名称 不是
apply to 这适用于可以生成子样本的采样器,例如带有嵌入式资源的HTTP采样器、邮件阅读器或事务控制器生成的样本。Main sample only - 只适用于主样本Sub-samples only- 只适用于子样本Main sample and sub-samples - 适用于所有样本JMeter Variable Name to use - 提取将应用于已命名变量XPath匹配应用于所有符合条件的示例,并返回所有匹配结果。 是
Use Tidy(tolerant parser) 如果选中,使用Tidy将HTML响应解析为XHTML“Use Tidy” 如果是处理HTML,应该选中此项,这样的响应使用Tidy转换为有效的XHTML (XML兼容的HTML)。“Use Tidy”如果是处理XHTML或XML,不需要选中(如RSS)。对于HTML, 建议使用CSS提取器,不要使用XPath提取器。 是
quiet 只显示需要的html页面
report errors 如果发生Tidy错误,则相应地设置断言
show warnings 显示警告
use namespaces 如果勾选此项,XML解析器将使用名称空间解析。注意,目前只有在根元素上声明的名称空间才能被识别。有关额外工作空间名称的用户定义,请参见下文。
validate xml 根据其模式检查文档。
ignore whitespace 忽略空白元素
fetch external DTDS 如果选中,则获取外部dtd
return entire xpath fragment instead of text content 如果选中,将返回片段,而不是返回文本内容。例如://title 将返回“
name of creadted variable jmeter变量名称存放提取参数值的 是
xpath query XPath语言中的元素查询。可以返回多个匹配项。 是
match NO.(0 for random) 如果XPath路径查询导致许多结果,您可以选择将其中一个(多个)提取为变量:0:返回随机值-1:表示提取所有结果(包含默认值),它们将被命名为<变量>_N(其中N从1到结果数量)X:表示提取第x个结果。如果第X个结果大于匹配的数量,则不返回任何值。将使用默认值 不是
default value 默认值当没有找到匹配时返回的默认值。如果节点没有值且未选择fragment选项,也会返回该值。
为了在ForEach控制器中使用,在return中设置以下变量:
refName -设置为第一个(或唯一的)匹配;如果没有匹配,则设置为默认
refName_matchNr -设置匹配数量(可能为0)
refName_n - n=1, 2, 3,等等设置为第1、2、3场等等。
注意:下一个refName_n变量被设置为null——例如,如果有两个匹配项,那么refName_3被设置为null,如果没有匹配项,那么refName_1被设置为null。
XPath是主要用于XSLT转换的查询语言。然而,它作为结构化数据的通用查询语言也很有用。有关详细信息,请参阅XPath参考或XPath规范。以下是一些例子:
/html /head/title
从HTML响应中提取标题元素
/book/page[2]
从一本书的第二页摘录
/book/page
从一本书中摘取全部页数
/ /form[@ name=‘countryForm’] / /select[@ name= ‘country’]/select[text()= ‘Czech Republic’]/@value
用name属性“country”从表单中提取匹配文本“Czech Republic”的选项元素值属性
当选中“Use Tidy”时,生成的XML文档可能与原来的HTML响应略有不同:
所有元素和属性名都转换为小写字母.
Tidy尝试纠正嵌套不正确的元素。例如-原来的(不正确的)ul/font/li变成正确的ul/li/font
NAMESPACES
作为Xalan XPath解析器(JMeter基于的实现)名称空间限制的解决方案,您需要:
提供一个属性文件(如果你的文件命名为namespaces.properties),其中包含名称空间前缀的映射:
prefix1=http://foo.apache.org
prefix2=http://toto.apache.org
…
在用户中引用此文件。使用属性的属性文件:
xpath.namespace.config=namespaces.properties
//mynamespace:tagname
//*[local-name()=‘tagname’ and namespace-uri()=‘uri-for-namespace’]
uri-for-namespacemynamespace
实例提取的是下面页面的上海对应的href值:
http://www.weather.com.cn/weather/101010100.shtml
jmeter接口请求:
xpath提取器(实例表达式://div[@class=‘w_city city_guonei’]//a[@title=“上海”]/@href)
css提取器(实例表达式:body>div>div>div>div>div>dl>dd>a[title=‘上海’])
正则表达式提取器(实例表达式:a\shref="(.*?)"\stitle=“上海”,“\s”表示空格):
执行结果:
注:在使用xpath提取器时,如果是处理的html页面,一定要选中“Use Tity”选项,否则会出现如下错误:
上文如果表格或是图片不显示,请打开此链接文档:jmeter提取器(css、xpath、正则表达式?..
链接:http://note.youdao.com/noteshare?id=9f82eb5f366c61c8cc40cb30f2d053ba&sub=2321A08AEB6D44B29730409BB4AFE094查看源文: