一般狀況下, 咱們能夠瀏覽器自帶的定位方式, Firefox的F12, Chrome的開發者工具, 找到元素右鍵copy-copy xpath便可。html
XPath 使用路徑表達式在 XML 文檔中選取節點。節點是經過沿着路徑或者 step 來選取的。 下面列出了最有用的路徑表達式:瀏覽器
在下面的表格中,咱們已列出了一些路徑表達式以及表達式的結果:jsp
使用絕對路徑的方式定位除非是其父級元素都沒有一個惟一識別的元素才使用該方式;假如要定位到輸入框,那麼使用絕對路徑的方式爲:函數
xpath= /html/body/div/div/div/div/div/form/span/input
就是從根部開始找,一級一級往下走,若是有同級別的須要用[]標明序號,從1開工具
//input表示要匹配全部的元素,//*表示匹配全部元素的標籤spa
注意:要保證這些元素能夠是惟一的標識code
若是input標籤中 id不是惟一的,type也不是惟一的,但在該頁面中包含該id和type的只有這個元素時,那麼咱們能夠用組合的方式定位orm
若是本身沒有惟一的標誌,那麼就找本身的上級(父級),或者上級的上級,以此類推。htm
若是須要定位的元素在該頁面不是惟一,但在某個容器內是惟一的,固然那個容器必需要有惟一的標誌; 跳級的話要用兩個//blog
謂語用來查找某個特定的節點或者包含某個指定的值的節點。
接着複製列表的xpath會有問題,須要個別分析,以下:
分析:能夠看到列表li上面有id屬性,全部就不能直接寫xpath=//*[@id="line_u8_0"],須要找他的父級,能夠有兩種寫法
其餘無關的元素也在其中很差取,附上地址能夠練習一下。這裏須要用到 position用來查找某個特定的節點或者包含某個指定的值的節點。以下:
分析:這裏須要截取中間一部分,按這個頁面舉例,能夠看到是重第三條table開始,到倒數3條table結束,纔是真正的列表。要確保xpath精準,只有列表。
last() 選擇最後一個,也就是倒數第一個 last()-1 選擇倒數第二個 last()-2 選擇倒數第三個 ...依次類推
毫無規律,也找不到對應的class,id等等,分析發現這裏看到他們的父級有valign屬性,變而且有無關元入參入,這裏須要用[@valign="top"]定位到元素,在配合截取,就完美解決了。