Xpath元素定位详解

作者: 测试开发栈 | 来源:发表于2017-03-23 21:28 被阅读1127次

    接上次《WebDriver元素定位策略》,这次进一步更深入的了解Xpath元素定位方法。

    一、引言

    通常情况下,使用id、name、class、text等元素定位方式一般可以满足日常80%左右的元素定位,可是有些时候随着自动化测试的深入和前端使用的框架差异你会发现存在这样的元素:
    1、没有id、name、class等属性;
    2、标签的属性或文本信息特征没有或者不明显;
    3、标签嵌套复杂,层次太多等。
    这时候我们不得不借助Xpath来实现元素定位了,那么什么是Xpath呢,它又是如何查找定位元素的呢?

    二、Xpath简介

    XPath是XML Path的简称,它是一种用来确定XML(可扩展标记语言)文档中某部分位置的语言。Xpath也是一种表达式语言,它基于XML的树状结构,可以用来在整个树中来寻找指定的节点,因此它的返回值可能是节点,节点集合,原子值,以及节点和原子值的混合等。由于HTML文档本身就是一个标准的XML页面,因此我们可以使用XPath的语法来定位页面元素。下面了解下Xpath的相关“语法”。

    三、Xpath定位方法

    1、Xpath的路径:

    Xpath的路径分为:绝对路径和相对路径,具体区别看下表:


    Paste_Image.png

    Xpath路径应用举例:


    Paste_Image.png
    2、选择分支:

    对于存在多个元素时想唯一定位,可以使用[]中括号来选择分支,下标从1开始(切记不是像数组那样从0开始哦)。


    Paste_Image.png

    注意:选择最后一个元素可以用last()函数,但是选择第一个元素没有first()函数。

    3、选择属性:

    有时候我们还可以利用标签内的属性来加以区分定位,在<>开始标记内除标签外,其他都可以看做是属性。


    Paste_Image.png
    4、常用函数:

    除了分支下标和属性外,Xpath还提供了很多函数来辅助定位,下列列出一些常用的:
    a.字符串查找函数: contains()
    语法:contains(string1,string2),表示如果 string1 包含 string2,则返回 true,否则返回 false。
    b.获取元素的文本内容: text()
    c.从起始位置匹配字符串:starts-with ()

    Paste_Image.png
    更多函数可参考:http://www.w3school.com.cn/xpath/xpath_functions.asp
    5、Xpath轴:

    上面这些方法都不能定位时,这时候就得考虑依据元素的父辈、兄弟或者子辈节点来定位了,这就需要用到Xpath轴,利用轴可定位某个相对于当前节点的节点集。
    语法:轴名称::标签名


    Paste_Image.png

    例如使用浏览器默认定位得到的xpath是:

    //*[@id='validate']/dl/dd[6]/span[2]/p/span
    

    现在使用Xpath的following轴就可以轻松定位到:

    //*[@id='pricetip']/following::span[1]
    

    四、总结

    利用Xpath可以定位界面所有元素,所以不要再抱怨前端开发写的界面没有一个id和name,没关系,你用Xpath照样可以把元素妥妥的定位出来。

    PS: 更多原创技术好文和资料,请关注下方公众号:“测试开发栈”公众号是由具有多年测试、开发经验的老兵们共同管理和运营,旨在分享原创互联网软件测试、开发相关技术。
    软件测试开发合并必将是趋势,不懂开发的测试、不懂测试的开发都将可能被逐渐替代,因此前瞻的技术储备和知识积累是我们以后在职场和行业脱颖而出的法宝,期望我们的经验和技术分享能让你每天都成长和进步,早日成为测试开发栈上的技术大牛~~
    同时也欢迎加入我们的QQ群交流和提问:427020613


    相关文章

      网友评论

      • Elliot_cc60:真心不喜欢这种方式,反人类的存在。。。
        测试开发栈:哈哈,见仁见智哈,有些时候没有id、name等属性不好定位,xpath还是很方便的

      本文标题:Xpath元素定位详解

      本文链接:https://www.haomeiwen.com/subject/nbeznttx.html