web自动化测试(八)xpath定位方式
xpath简介
- XPath 是一门在 XML 文档中查找信息的语言。
xpath定位场景
- web自动化
- app自动化,包括原生控件定位
xpath定位调试方法
- 浏览器-elements,Ctrl+F搜索栏输入xpath表达式
- 浏览器-console,输入:$x("xpath表达式")
xpath基本语法
表达式 | 结果 | 示例 | 示例说明 |
---|---|---|---|
/ | 从该节点的子元素选取 | $x("/") | 整个页面 |
// | 从该节点的子孙元素选取 | $x("//*") | 整个页面中的所有元素 |
* | 通配符 | $x("/*") | 页面中的所有的子元素 |
nodename | 选取此节点的所有子节点 | $x("//div") | 查找页面上面所有的div标签节点 |
. | 选取当前节点 | $x('//*[@id="site-logo"]/.') | 查找当前节点,也可以不使用 |
.. | 选取当前节点的父节点 | $x('//*[@id="site-logo"]/..') | 查找节点的父节点 |
@ | 选取属性 | $x('//*[@id="site-logo"]') | 查找id属性为site-logo的节点 |
xpath高级语法
语法 | 表达式 | 举例 | 结果 |
---|---|---|---|
n | //标签名[n] | //input[2] | 选取第二个input标签 |
last() | //标签名[last()] | //input[last()] | 选取最后一个input标签 |
postion() | //标签名[postion()<4] | input[postion()<4] | 选取前3个input元素 |
and | //标签名[@属性名='属性值' and @属性名='属性值'] | //input[@name='passward' and @pwd='123456'] | 选取属性name的值为passward并且属性pwd的值为123456的input标签 |
text() | //标签名[text()=‘文本信息’] | //*[text()='测试人'] | 选取所有文本信息为’测试人’的元素 |
contains() | //标签名[contains(text(),‘文本信息’)] | //*[contains(text(),'测试人')] | 选取所有文本信息包’测试人’的元素 |
XPath 轴(Axes)
轴可定义相对于当前节点的节点集。
轴名称 | 结果 |
---|---|
ancestor | 选取当前节点的所有先辈(父、祖父等)。 |
ancestor-or-self | 选取当前节点的所有先辈(父、祖父等)以及当前节点本身。 |
attribute | 选取当前节点的所有属性。 |
child | 选取当前节点的所有子元素。 |
descendant | 选取当前节点的所有后代元素(子、孙等)。 |
descendant-or-self | 选取当前节点的所有后代元素(子、孙等)以及当前节点本身。 |
following | 选取文档中当前节点的结束标签之后的所有节点。 |
following-sibling | 选取当前节点之后的所有兄弟节点 |
namespace | 选取当前节点的所有命名空间节点。 |
parent | 选取当前节点的父节点。 |
preceding | 选取文档中当前节点的开始标签之前的所有节点。 |
preceding-sibling | 选取当前节点之前的所有同级节点。 |
self | 选取当前节点。 |