自动化测试中如何使用Xpath定位器

自动化测试中如何使用Xpath定位器

在本教程中,我们主要研究Selenium WebDriver进行自动化测试时如何使用Xpath进行元素定位。主要包括如何创建Xpath定位器,不同类型的Xpath以及使用Xpath查找动态元素的方法。

什么是Xpath

我们可以把Xpath理解为在XML文档中查找不同元素的查询语句。(同样适用于HTML文档的查询) 基本语法格式:
//标签[@attributeName = 'attributeValues']

例如: 

百度文本框的标签为: input

属性及值包括:class = "s_ipt" name = "wd" id = "kw" 等

按照我们上面的语法,这个表达式就可以这么写:

  • //input[@class='s_ipt']
  • //input[@name = 'wd']
  • //input[@id = 'kw'] 当然只要我们使用的属性是唯一的,任何元素都可以用该方式定位到。

不同类型的Xpath

1 . 绝对路径Xpath:指表达式从根节点开始选择,以“/”或根节点开头,遍历整个DOM直到定位的元素。

例如以上百度输入框使用绝对路径: html/body/div[1]/div[1]/div/div[1]/div/form/span[1]/input

2 . 相对路径Xpath:表达式以“//”开头,匹配XML文档中任何位置满足查找的元素。

相对路径上面已经给出://input[@id = 'kw']

以上两种方式那种更好呢?显然相对路径的方式更容易让人阅读和创建,而且更健壮。绝对路径的主要问题就是,任何元素的细微变化都会使我们的Xpath表达式无效。

使用Xpath查找动态元素

在实际的UI自动化测试过程中,我们经常会遇见一些没有唯一属性的或者属性相同的元素。对于这样的情况,Xpath提供了不同的方法来定位。比如使用元素上的文本内容,或者使用元素的索引,或者使用部分匹配的属性值,当然也可以通过唯一识别的元素的兄弟,孩子或者父母来定位等等。

使用文本

例如我们要定位百度首页右上角的【新闻】元素 表达式://a[text()='新闻']

使用包含

表达式://div[contains(@id,'sb')]

使用索引

我们这次要定位右上角的【视频】元素 表达式://div[@id='u_sp']/a[4]

使用Xpath轴

  • 子关系 表达式语法://div[@id='u_sp']/child::* 表示所有的子节点元素
  • 父关系 表达式语法://div[@id='u_sp']/parent::* 表示获取所有的父节点元素
  • 兄弟关系 表达式语法: //div[@id='u_sp']/following-sibling::* 表示当前节点后的所有同级节点

有兴趣的同学可以试试,有问题可随时联系我们。QQ群:368872334

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值