<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