在web自動化里面經常要用到定位,常用的八種定位方式中我最喜歡xpath定位,功能很強大。結合它里面的文本定位、模糊定位、邏輯定位等,基本能搞定所有的元素定位問題。
今天要討論的是xpath的另一種比較復雜的定位:軸定位。網上的關於軸定位的我翻了下,說得都不夠詳細 ,有的一筆帶過,這着實苦惱了我許久。晚上研究了會,發現這玩意確實不好理解,特此記錄一下,以防日后又忘了。。
總共有八個軸關鍵字,parent,child,ancestor祖先,descendant后裔,following,following-sibling兄弟姐妹,preceding,preceding-sibling。具體含義如下:
-
parent::div 上層父節點,你那叫div的親生爸爸,最多有一個;
-
child::div 下層所有子節點,你的所有親兒子中叫div的;
-
ancestor::div 上面所有直系節點,是你親生爸爸或者你親爹或者你親爹的爸爸中叫div的;
-
descendant::div 下面所有節點,你的后代中叫div的,不包括你弟弟的后代;
-
following::div 自你以下頁面中所有節點叫div的;
-
following-sibling::div 同層下節點,你所有的親弟弟中叫div的;
-
preceding::div 同層上節點,你所有的親哥哥以及他們的后代中叫div的;
-
preceding-sibling::div 同層上節點,你所有的親哥哥中叫div的;
注意他們之間有些微妙的區別,最好結合實際的元素定位例子親自操作一下,這里以小米商城mi.com首頁為例:
這是parent:
這是child:
這是ancestor:
這是ancestor:
這是following:
這是following-sibling:
這是preceding:
這是preceding-sibling:
怎么樣,現在是不是對xpath軸定位有了更深刻的認識了?