首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

软件测试笔记|web自动化测试|解锁软件测试 XPath 技巧

在软件测试领域,精准定位网页元素是实现高效自动化测试的关键。而XPath定位技术,作为一种强大的元素定位手段,为测试人员提供了在HTML文档中准确查找相关信息的能力。

今天,我们就深入探讨一下XPath定位技术,帮助你更好地掌握这一重要技能。

一、安装ChroPath插件

在学习XPath定位技术之前,我们需要先安装ChroPath插件。它是Firefox浏览器的一个得力助手,能够协助测试人员快速定位网页元素。具体安装步骤如下:

2. 在“附加组件”页面,点击左侧“扩展”按钮,然后在搜索框中输入“ChroPath”进行搜索。

3. 找到“ChroPath for Firefox”并点击进入详情页,接着点击“添加到Firefox”按钮,在弹出的提示框中选择“添加”,安装完成后点击“确定”。

4. 安装成功后,打开任意网页,选定一个网页元素并右键选择“查看元素”,在网页下方点击“ChroPath”按钮,即可打开ChroPath主界面。

二、XPath之绝对路径定位法

XPath元素定位有绝对路径和相对路径两种常用方式。我们先来了解绝对路径定位法。

1. 假设我们有如下一段HTML代码:

我的第一个网页<br>

这段代码运行后,在网页中会显示相应内容,如“自定义超链接标签”“我的第一个网页”、一个文本输入框和一个指向人民邮电出版社的链接。

2. 若要定位其中的文本输入框,从代码结构来看,输入框对应的节点为`input`。其上级节点依次为`body`和`html`。在XPath中,`html`是根节点,用斜杠“/”表示。所以从根节点定位到`input`节点的路径表达式为

`/html/body/input`

3. 在ChroPath工具的“selectors”输入框中输入该路径表达式并按“Enter”键,若输入框被虚线框起来,且网页下方提示

1 matching node found. Find the matching node below:

则表示定位成功。不过,在实际工作中,绝对路径定位法并不常用,因为HTML文档结构一旦变化,就可能导致定位失败。

三、XPath之相对路径定位法

相对路径定位法在实际工作中更为常用,以下是几种常见的相对路径定位方式。

(一)相对路径加id属性进行元素定位

如果节点含有id属性,可利用id属性进行定位,其基本格式为

`//任意节点[@id='属性值']`

例如,在人民邮电出版社首页的“登录”链接,其HTML代码为

`<a id="login_home" href="/login" target="_blank">登</a>`

要定位该链接,相对路径表达式可写为

`//a[@id='login_home']`

将此表达式输入ChroPath工具的“selectors”框中,若“登录”链接被虚线框住,即表示定位成功。

(二)相对路径加非id属性进行元素定位

当节点没有id属性时,可利用其他具有唯一性的属性进行定位,格式为

`//任意节点[@非id的任意属性='属性值']`

以人民邮电出版社会员登录页面的“用户名/手机号”输入框为例,其代码为

`<input name="username" type="text" class="form-control user_phone" placeholder="用户名/手机号" maxlength="11" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')" onblur="phoneVer(this)">`

这里可利用`name`属性进行定位,相对路径表达式为

`//input[@name='username']`

在ChroPath工具中测试,可成功定位该输入框。

(三)相对路径加contains()函数进行元素定位

若节点既无id属性,其他属性也不唯一,但包含文本信息且该文本具有唯一性时,可使用

`//包括有文本信息的节点[contains(text(),'文本信息')]`

格式进行定位。比如人民邮电出版社首页的“新闻活动”链接,代码为

`<a href="/newsInfo/list" title="新闻活动">新闻活动</a>`

其相对路径表达式为

`//a[contains(text(),'新闻活动')]`

在ChroPath工具中输入此表达式可成功定位该链接。同时,

`//a[contains(.,'新闻活动')]`

`//a[test()='新闻活动')]`

这两种格式也可实现同样效果。

(四)相对路径加非id属性加contains()函数进行定位

当节点既无id属性,其他属性和属性值不唯一,且contains()函数中的文本信息也不唯一,但两者联合具有唯一性时,可采用

`//包含有文本信息的节点[@非id的任意属性='属性值'][contains(text(),'文本信息')]`

格式定位。如人民邮电出版社首页下方“异步社区”链接,代码为

其相对路径表达式为

在ChroPath工具中可成功定位该链接。

(五)通过ChroPath工具自动生成相对路径表达式

手写相对路径表达式需分析HTML代码,较为繁琐,ChroPath工具提供了自动生成功能。只需点击ChroPath页面中的“inspect”按钮,再点击页面元素,该元素的相对路径表达式就会自动显示。

此外,Firefox浏览器的“查看页面元素”按钮也很实用,点击后将鼠标移至网页元素,可快速精确地高亮显示元素对应的HTML代码。

在实际工作中,建议优先使用XPath的相对路径方式进行网页元素定位。因为相对路径定位在节点属性不变的情况下,即便文档结构有所改变,仍能准确定位元素。希望本文对大家掌握XPath定位技术有所帮助,让你的软件测试工作更加高效、精准。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/O4G9OqboZE-hQIkSnc7cQQRQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券