zoukankan      html  css  js  c++  java
  • Robot Framework与Web界面自动化测试学习笔记:利用xpath定位元素

    在rf中,利用selinum2的关键字进行用例编写时,很多关键字的参数是html元素的定位标识。

    最简单的方式,是通过id 或name来描述元素定位信息,如

    click  button    id=loginBtn  //表示点击id值为loginBtn的按钮元素

    利用id和name来定位元素,前提是要求元素设置了idname属性,并且是唯一的。但实际的web页面中,很多元素是没有id或name的,这时可通过html元素在页面中的路径来判断。

    我们拿找人这个来比喻,利用id就好比通过身份证号(因为身份证号是唯一的)来找人。利用路径就好比用地址来找人,比如某个人的地址是 xxxxxxxxxx号。

    Xpath 就是这个意思,它通过提供元素在html文件中的层级位置来定位元素。

    通过xpath定位元素,又有两种方式,一是绝对定位,也就是说从根元素html节点开始。还有一种是相对定位,就是从已知的某个上层节点往下定位。相对定位,就好比,我已经定在xx省下的xx市找人,这样我就不用关心省和市了。

    下面我们一一来解释。

    (一)绝对定位

    例子如:

    click element    xpath=/html/body/div[1]/div[1]/form[1]/label[4]

    元素后面跟 [数字] 的含义是:因为一个节点下可能有多个相同标签的元素,这里的[]中的数字表示取第几个元素(1代表第1个元素)。比如第一个div[1]表示取body下的第一个div元素,而最后的label[4]表示它所在的form元素下有多个label元素,这里取第4个label元素。如果不加[]和序号,表示是第一个元素。

    (二) 相对定位

    绝对定位的方式比较啰嗦和麻烦,而且一旦元素的层级关系发生变化(这是经常发生的事),其定位描述也跟着变,这会更用例编写带来巨大的维护工作量。

    在实际应用中,一般采用相对定位的方式,比如先定位到某个上层节点,在按照xptah的方式找它的下层节点。比如上面的例子,如果form[1]可以唯一定位。则就可以这样描述xpth。

    xpath=//form[@id='f204']/label[4]

    最前面的//表示采用相对定位。  form后面的[]内的 @id='f204' 表示通过id 属性值来确定form标签。后面的label[4]是通过序号来确定form内的label标签。

    xpath=//form[@id='f204']/*/input[@name=xx]

    在xptah表达式中*表示任意元素。上面的意思,表示定位该form下任意第三层节点(孙子节点)下的name值为xx的标签为input的元素。

    说明:xptah有详细的规范,上面的只是最简单的应用方式,通过xptah提供的各种描述方式,非常强大,可以满足绝大部分定位的需求。

  • 相关阅读:
    html-webpack-plugin & clean-webpack-plugin
    Using webpack-dev-server
    Using Watch Mode
    webpack中devtool的配置方案[开发模式]---[线上模式]
    linux命令系列-mv(移动-重命名)
    洗牌函数[打乱数组的顺序] slice()的新运用 [原来arr.slice(start, end) 的start不是必需的]
    Currency Exchange (POJ1860)(判断正圈)(spfa) 最短路专题
    PTA L3-020 至多删三个字符 (DP) (天梯赛训练)
    Codeforces Round #658 (Div. 2)(D. Unmerge)
    Codeforces Round #656 (Div. 3) (E. Directing Edges)(拓扑排序)
  • 原文地址:https://www.cnblogs.com/51kata/p/5179010.html
Copyright © 2011-2022 走看看