在软件测试领域,精准定位网页元素是实现高效自动化测试的关键。而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定位技术有所帮助,让你的软件测试工作更加高效、精准。
领取专属 10元无门槛券
私享最新 技术干货