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

 

posted @ 2016-02-03 09:45  51kata  阅读(1870)  评论(0编辑  收藏  举报