Xpath (XML Path Language),是W3C定義的用來在XML文檔中選擇節點的語言。
一、從根目錄 / 開始
有點像Linux的文件查看,/ 代表根目錄,一級一級的查找,直接子節點,相當於css_selector中的 > 號
/html/body/div/p
二、根據元素屬性選擇
查找具體的元素,必須在前面輸入標准開頭 //,表示從當前節點尋找所有的后代元素
//div/* div下面的所有的元素 //div//p 先在整個文檔里查找div,再在div里查找p節點(只要在內部,不限定是否緊跟) ;等價於 css_selector里的('div p') //div/p p是div的直接子節點; 等價於 css_selector里的('div > p') //*[@style] 查找所有包含style的所有元素,所有的屬性要加@; 等價於 css_selector里的('*[style]') //p[@spec='len'] 必須要加引號;等價於 css_selector里的("p[spec='len']") //p[@id='kw'] xpath中對於id,class與其他元素一視同仁,沒有其他的方法
三、選擇第幾個節點
//div/p[2] 選擇div下的第二個p節點 ;等價於css_selector里的div>p:nth-of-type(2) 符合p類型的第二個節點 //div/*[2] 選擇div下第二個元素 //div/p[position()=2] position()=2 指定第二個位置; 等價於上面的 //div/p[2] position()>=2 位置大於等於2 position()<2 位置小於2 position()!=2 位置不等於2 //div/p[last()] 選擇div下的倒數第一個p節點; last()倒數第一個 //div/p[last()-1] 選擇div下的倒數第二個p節點; //div/p[position()=last()] 倒數第一個 //div/p[position()=last()-1] 倒數第二個 //div/p[position()>=last()-2] 倒數第一個,第二個,第三個
四、組合選擇
//p | //button 選擇所有的p和button,等價於css_selector里的 p, button //input[@id='kw' and @class='su'] 選擇id=kw 並且 class=su的input元素
五、兄弟節點的選擇
相鄰后面的兄弟節點的選擇:following-sibling:: 兩個冒號 //div/following-sibling::p 選擇div里相鄰的p節點 相鄰前面的哥哥節點的選擇:preceding-sibling::后面加上元素標簽 # 此方法在css_selector中沒有 相鄰前面的弟弟節點的選擇 following-sibling:: 后面加上元素標簽 //div/preceding-sibling::p[2] 選擇div里前面相鄰的第二個節點,不加[2]選擇的是前面的所有的p節點
六、選擇父節點
//p[@spec='len']/.. 選擇p節點的上層節點 此方法在css_selector中沒有 //p[@spec='len']/../.. 上層節點的上層節點
七、在webelement對象里面使用查找Xpath 查找時,必須使用 . 指明當前節點
food = driver.find_element_by_id('food') eles = food.find_elements_by_xpath(".//p") .指明當前節點 eles = food.find_elements_by_xpath("..") 查找當前節點的父節點