注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网易杭州 QA Team

务实 专注 分享 做有态度的QA

 
 
 
 
 

日志

 
 

UI自动化小结:运用xpath数组定位指定文章的其他元素  

来自权芹乐   2013-02-19 17:02:45|  分类: 自动化测试 |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一、问题描述

编写LOFTER自动化用例时遇到以下场景:

先根据文字信息(如成群的海鸥)定位到特定的文章,然后对这篇文章进行其他操作(如点击推荐

UI自动化小结:运用xpath数组定位指定文章的其他元素 - 网易杭州QA - 网易杭州 QA Team

这部分页面的html如下,从图中可以看出两个元素往上可以追溯到同一个div

UI自动化小结:运用xpath数组定位指定文章的其他元素 - 网易杭州QA - 网易杭州 QA Team
 

二、解决方法 

Xpath本身其实已经提供了解决方案“父节点parent

 【定义】 parent:选取当前节点的父节点。

那么,例子中“推荐”按钮的xpath可以写成:

//p[contains(text(),'成群的海鸥')]/parent::*/parent::*/parent::*/parent::*/parent::*//a[text()='推荐'] 

但是,这种写法带来一些问题:

1.        /parent::*/parent::* 其实是绝对路径,页面变动时可能会带来一定的维护成本;

2.        有时两个元素可能都离共同的节点太远,这样的话就要写很多parent


那么换个思路来规避这些问题吧!

例子中所有的操作都是以博客文章为单位的,如果能先定位到第几篇文章(把文章当成数组,即xpath数组),该文章其他元素的定位就可以采用相对路径的形式了。

以此思路给出上例的解决方案(提取成公共API会比较实用):

UI自动化小结:运用xpath数组定位指定文章的其他元素 - 网易杭州QA - 网易杭州 QA Team
 
三、总结  
文章记录了两种方式处理“由一个元素定位另一个元素”的问题,个人认为两种方式并没有明显的优劣之别,实际使用中采用哪种方式还是要根据问题的实际情况。
  评论这张
 
阅读(763)| 评论(1)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016