<span class=”cde”>嘎嘎嘎</span> <div id=”abc”> <form> <div> <input> <span class=”cde”>八佰伴</span> </input> </div> </form> <div>
分析:该元素,没有唯一性的id,name等标签,并且层级多,上一级也没有唯一性的东西,只能从上上上级开始查找元素。但是从上上级查找元素,xpath的层级多,定位信息复杂,那么有没有办法优化精简呢?答案是肯定的,利用//可以大幅优化精简xpath表达式
方案一://div[@id=’abc’]/form/div/input/span
方案二://*[@id=’abc’]/form/div/input/span[@class=’cde’]
方案三://span[@class=’cde’][2]
方案四://div[@id=’abc’]//span[@class=’cde’]--此方法最简洁,结构也最清晰,也最稳定
综上xpath定位原则,元素id,name属性优先使用,其次是class等其他,1、在当前节点没有id,name等属性确定元素唯一性的时候,往上找,通过当前节点父亲,祖父,祖父的父亲,祖父的祖父等节点查找当前元素。2、一个元素属性不足够定位当前元素的时候,可以通过and运算符,组合属性来定位使之达到唯一性,尽可能的缩短xpath层级,使xpath定位更稳定。
原文转自:http://git.oschina.net/zhengshuheng/PatatiumWebUi