zoukankan      html  css  js  c++  java
  • web自动化测试(2)--使用xpath实现页面元素的定位

    在上一节中,我们了解了web页面元素定位常见的8种方式,本节将详细介绍如何使用xpath实现对web页面中元素的定位。

    在掌握xpath实现页面元素定位的方法之前,我们需要简单的回顾一下html页面的组成:

    1.在一个html页面中,存在很多的已经定义好的标签对,通常也称为元素;

    2.标签一般包括:标签名、属性以及文本内容,即 <标签名 属性名=属性值>文本内容</标签名

    根据标签对的构成(或者是元素的3个特征:标签名、属性以及文本内容),我们可以比较方便的实现对页面中元素的定位。

    一、元素定位分类

    1、绝对定位

    以“/”开头,从根结点开始,逐级定位到当前的结点。 -- 可以与绝对路径进行类比

    2、相对定位 -- 推荐

    以“//”开头,使用相对定位的原则如下:

      2.1、不依赖结点的位置和顺序;

      2.2、只要能够找到匹配的特征元素即可。

    二、辅助工具

    在对页面中的元素进行定位时,可以使用浏览器中的F12开发者工具。

    Note:

      在输入xpath表达式之前,需要通过Ctrl+F键打开表达式输入框

    三、xpath表达式书写规则(*)

    说明:该规则仅针对相对定位而言。

    1、使用单一属性实现对元素的定位(通常情况下,选取的这些属性的值相对固定)

      1.1、//标签名[@属性名=值]      -- 根据属性值进行定位

      1.2、//标签名[text()=值]       -- 根据文本内容进行定位

      1.3、//标签名[contains(@属性名,值)]    -- 根据属性值进行部分匹配

      1.4、//标签名[contains(text(),值)]     -- 根据文本内容进行部分匹配

      1.5、在进行匹配时,* 表示可以匹配任意的标签名或者属性名。如 //*[contains[@*,"TopicDiscuss"]]

    2、单一属性的组合

    当单一属性无法唯一定位到元素时,可以使用组合条件进行定位

      2.1、and:特征同时满足     

         //标签名[text()=值 and @属性名=值 and contains(@属性名,值)]

      2.2、or:特征有一个满足即可

        //标签名[text()=值 or @属性名=值 or contains(@属性名,值)]

    当仅靠待定位元素本身的特征无法属性进行唯一定位时,可以考虑使用层级定位轴定位

    3、层级定位:使用待查找的结点的“祖先”结点进行定位

      //祖先结点//待查找的结点

      如我们需要定义name=“tj_login”的结点,可以先找到其id="u1"的祖先结点,即 //div[@id="u1"]//a[@name="tj_login"]

    4、轴定位

    如果将层级定位看成是元素”从上至下“进行查找,那么轴向定位即可以看成元素的反向定位,即通过某一个已知元素定位其祖先元素或者兄弟元素,定位出的这些元素恰好是我们需要查找的元素。

      4.1、ancestor:用于定位祖先结点,包含父结点

      4.2、parent:用于定位父结点

      4.3、preceding-sibling:已知元素结点标签之前的所有兄弟结点

      4.4、following-sibling:已知元素结点标签之后的所有兄弟结点

    定位语法如下:

      //已知的元素/轴名称::标签名称[@属性名,值],具体实例如下:

      (1)//span[text()="考勤"]/parent::a

      (2)//span[text()="考勤"]/ancestor::a

      (3)//li[text()="发布作业"]/preceding-sibling::*

      (4)//p[@title="030011"]/following-sibling::p[@class="name"]

    【说明】

    1.轴定位中常见的4种定位方式,在实际应用中,可以根据需要进行组合定位,这就需要测试人员提前理清各元素之间的逻辑关系;

    如://span[text()="考勤"]/ancestor::a/following-sibling::p//div

    2.轴定位的组合应用场景:页面显示为一个表格样式的数据列。

    四、xpath实现元素定位的部分实例

     

      ......

  • 相关阅读:
    Kafka中数据的流向
    kafka调试中遇到could not be established. Broker may not be available. (org.apache.kafka.clients.NetworkClient)
    knife4j
    SpringBoot使用ELK日志收集ELASTIC (ELK) STACK
    Jedis连接池(实际项目可用)
    Redis windows安装帮助
    Spring Boot 多数据配置更新
    SpringBoot使用Mybatis-Generator
    tkinter显示图片
    window nodejs 版本管理器 nvm-windows 教程
  • 原文地址:https://www.cnblogs.com/yif930916/p/14777807.html
Copyright © 2011-2022 走看看