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

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

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

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

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

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提供的各种描述方式,非常强大,可以满足绝大部分定位的需求。

Robot Framework与Web界面自动化测试学习笔记:利用xpath定位元素的更多相关文章

  1. Robot Framework与Web界面自动化测试学习笔记:简单例子

    假设环境已经搭建好了.这里用RIDE( Robot Framework Test Data Editor)工具来编写用例.下面我们对Robot Framework简称rf. 我们先考虑下一个最基本的登 ...

  2. Robot Framework与Web界面自动化测试学习笔记:如何判断单选框的选中状态

    单选按钮是个常见的html元素,在网页中往往提供一组单选按钮来做选项. 这样在自动化测试用例中需要判断当前选中的按钮是否与预期的一直. 可以这样来操作: ${value}    Get Element ...

  3. Robot Framework与Web界面自动化测试学习笔记:定位到新窗口

    在页面操作中,有时会需要打开新的窗口(新的网页不在当前窗口显示,而是在新的tab页显示), 比如利用  window.open("newurl") 或者  <a href=& ...

  4. Robot Framework与Web界面自动化测试:简单例子

    假设环境已经搭建好了.这里用RIDE( Robot Framework Test Data Editor)工具来编写用例.下面我们对Robot Framework简称rf. 我们先考虑下一个最基本的登 ...

  5. Selenium3自动化测试【18】XPath定位元素(2)

    层级与属性结合定位 如果被定为的元素,无法通过自身属性来唯一标识自己,此时可以考虑借助上级元素来定位自己.举生活中的例子,一个婴儿刚出生,还没有姓名与身份证号,此时给婴儿进行检查时往往会标注为&quo ...

  6. Robot Framework进行web ui自动化测试,浏览器配置说明

    转载请注明出处,谢谢: chrome浏览器: 1.从如下地址下载与本地浏览器版本号一致的chromedriver.exe驱动文件: http://chromedriver.storage.google ...

  7. 【学习笔记】XPath定位总结

    XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言. 原理:基于html的文档目录结构进行定位元素. 以html代码为例讲解各种定位方法: ...

  8. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78516 ...

  9. Scrapy:学习笔记(1)——XPath

    Scrapy:学习笔记(1)——XPath 1.快速开始 XPath是一种可以快速在HTML文档中选择并抽取元素.属性和文本的方法. 在Chrome,打开开发者工具,可以使用$x工具函数来使用XPat ...

随机推荐

  1. WPF qq界面(转)

    原文:http://blog.csdn.net/u013981858/article/details/49130885 刚开始学WPF,自己写了个小东西,说实话写的并不好,好多东西不懂只是用现在懂的东 ...

  2. 阿里云部署 Flask + WSGI + Nginx 详解

    抵不住朋友的诱惑,今天终于入手了一台阿里云服务器,是Ubuntu 1.4 32位版本,最初考虑是用来尝尝鲜只是买了个最低配的,价格算起来与在国外买个空间的价格相当吧(可能一年才贵100多),但用起来感 ...

  3. JAVA语言的素数判断,随机数,函数调用

    近来刚学JAVA,就从JAVA写起吧,JAVA判别素数,其实方法和C/C++没什么区别,主要就是想谈一下,其中包括的3个点. (1)JAVA语言产生随机数,random函数,定义参数max的作用是给出 ...

  4. Properties的使用

    Properties的各种相对路径,绝对路径的用法 所在包: package com.test.javaAPI.collections; import java.io.File; import jav ...

  5. Laravel 简单使用七牛云服务

    前言 路漫漫其修远兮,吾将上下而求索.学习 Laravel 之初觉得所有东西都很厉害的样子,现在看来就是很厉害啊!最近在写一个项目上传的模块,要上传图片到七牛云,昨天看了一下午七牛云官方的文档感觉还是 ...

  6. javascript 检测密码强度

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. ie条件注释还能这样写

    通过条件注释给html开始标签定义不同的class, 来区分不同版本的IE,可以在样式表中避免 样式属性hack (如 _margin-top, *float:none ) 注意: IE10+不支持条 ...

  8. python urllib和urllib2 区别

    python有一个基础的库叫httplib.httplib实现了HTTP和HTTPS的客户端协议,一般不直接使用,在python更高层的封装模块中(urllib,urllib2)使用了它的http实现 ...

  9. android面试题之二

    六.android 中的动画有哪几种,它们的特点和区别是什么 ? 逐帧动画和补间动画. 逐帧动画:是传统的动画播放方式,指定每一帧的内容和停留时间,然后顺序地播放排列好的图片,类似电影. 补间动画:给 ...

  10. Codeforces 455B A Lot of Games(字典树+博弈)

    题目连接: Codeforces 455B A Lot of Games 题目大意:给定n.表示字符串集合. 给定k,表示进行了k次游戏,然后是n个字符串.每局開始.字符串为空串,然后两人轮流在末尾追 ...