18

测试工具-XPath使用

 3 years ago
source link: http://www.cnblogs.com/hally/p/13735326.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

JMeter的XPath提取器

zuaIriv.png!mobile

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. 基本语法

jQzy2iV.png!mobile

  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

扫一扫,关注我

BrmiUnq.jpg!mobile

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK