专栏文章 测试工具-XPath

大道 · 2020年09月26日 · 1903 次阅读

XML 有两种 MIME 类型,即 application/xml 和 text/xml,在 HTTP 中,MIME Type 类型被定义在 Content-Type header 中。我们经常也会看到接口返回数据类型为 XML 格式。功能测试/自动化脚本里,经常会需要提取 xml 数据,用作上下文使用或者用作断言校验。使用 XPath 可以很好的完成对 XML 的查找、提取和使用,同样也支持 HTML 元素的解析。

JMeter 的 XPath 提取器

image

XPath页面的参数介绍

Apply to:作用范围(返回内容的断言范围)
         Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器
         Main sample only:仅作用于父节点的取样器
         Sub-samples only:仅作用于子节点的取样器
         JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)
XML Parsing Options:要解析的XML参数
         UseTidy:当需要处理的页面是HTML格式时,必须选中该选项;如果是XML或XHTML格式(例如RSS返回),则取消选中;
         Quiet:表示只显示需要的HTML页面,
        报错异常:Report errors表示显示响应报错,
        显示警告:Show warnings表示显示警告;
         Use Namespaces:如果启用该选项,后续的XML解析器将使用命名空间来分辨;
         Validate XML:根据页面元素模式进行检查解析;
         Ignore Whitespace:忽略空白内容;
         Fetch external DTDs:如果选中该项,外部将使用DTD规则来获取页面内容;
Return entire XPath fragment of  text content:返回文本内容的整个XPath片段;
引用名称Reference Name:存放提取出的值的参数。
XPath Query:用于提取值的XPath表达式。
匹配数字:取第几个匹配结果,0随机,-1全部,1代表第一个,2代表第二个,....以此类推
默认值 Default Value:参数的默认值。

如何编写 XPath

  1. 基本语法

image

  1. 使用示例
  • 根据元素属性定位
<span class="x-bw" style=""></span>
选取属性class的属性值为x-bw的所有节点
//span[@class='x-bw']
  • 层级属性结合定位
查找某元素内部的所有元素,选取div 元素内部的所有span
//div[@id="divId"]//span

第二个双斜杠,表示选取内部所有的 span,不管层级关系
  • 使用谓语定位
查找倒数第几个子元素,选取form下的倒数第一个span
//form[@id="form"]/span[last()-1]
  • 使用逻辑运算符
查找name属性为wd或者class属性为 s_ipt 的任意元素,取其中之一满足即可
//*[@name='wd' or @class='s_ipt']

  • 使用文本定位
contains 选取属性或者文本包含某些字符
starts-with 选取属性或者文本以某些字符开头
ends-with 选取属性或者文本以某些字符开头

//div[contains(@id, 'divId')] 选取id 属性包含divId的div元素

Java 的 XPath 工具包

Java自带一个XPath工具包javax.xml.xpath

Python 的 XPath 工具包

pip install scrapy 

扫一扫,关注我

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册