前言
在上一篇簡單的介紹了用工具查看目標元素的xpath地址唉俗,工具查看比較死板渐夸,不夠靈活,有時候直接復制粘貼會定位不到鱼鸠。這個時候就需要自己手動的去寫xpath了,這一篇詳細講解xpath的一些語法羹铅。**
一蚀狰、xpath:屬性定位
1、xpath也可以通過元素的id职员、name麻蹋、class這些屬性定位,如下:
①. 用xpath通過id屬性定位
driver.find_element(By.XPATH,"http://*[@id='kw']")
②. 用xpath通過name屬性定位
driver.find_element(By.XPATH,"http://*[@name='wd']")
③. 用xpath通過class屬性定位
driver.find_element(By.XPATH,"http://*[@class='s_ipt']")
二焊切、xpath:其他屬性
1哥蔚、沒有上述屬性倒谷,可以通過其他屬性定位,如下:
driver.find_element(By.XPATH,"http://*[@autocomplete='off']")
三糙箍、xpath:標簽
1渤愁、如果同一個屬性,同名的比較多深夯,可以通過標簽曬選下:
2抖格、如果不想制定標簽名稱,可以用號表示任意標簽*
3咕晋、如果想制定具體某個標簽雹拄,就可以直接寫標簽名稱
①.?用xpath通過其他屬性定位
driver.find_element(By.XPATH,"http://input[@autocomplete='off']")
②. 用xpath通過id屬性定位
driver.find_element(By.XPATH,"http://input[@id='kw']")
③. 用xpath通過name屬性定位
driver.find_element(By.XPATH,"http://name[@id='wd']")
四、xpath:層級
1掌呜、如果一個元素滓玖,他的屬性不明顯,無法直接定位质蕉,可以先找到他的父元素
2势篡、找到父元素,再找下一級就能定位
①. 通過定位父元素來定位input輸入框
driver.find_element(By.XPATH,"http://span[@id='s_kw_wrap']/input")
②. 通過定位爺元素來定位input輸入框
driver.find_element(By.XPATH,"http://form[@id='form']/span/input")
五模暗、xpath:索引
1禁悠、如果一個元素和他同級的標簽一樣,無法通過層級定位
2兑宇、可以通過排序定位
①. 用xpath定位第一位
driver.find_element(By.XPATH,"http://select[@id='nr']/option[1]")
②. 用xpath定位第二位
driver.find_element(By.XPATH,"http://select[@id='nr']/option[2]")
③. 用xpath定位第三位
driver.find_element(By.XPATH,"http://select[@id='nr']/option[3]")
六碍侦、xpath:邏輯運算
1、xpath還有一個比較強的功能隶糕,是可以多個屬性邏輯運算的瓷产,可以支持and、or枚驻、not
2拦英、一般用的比較多的是and運算,同時滿足兩個屬性
driver.find_element(By.XPATH,"http://select[@id='nr' and @autocomplete='off']")
七测秸、xpath:模糊匹配
1疤估、xpath強大的模糊匹配
2、掌握了模糊匹配功能霎冯,基本上沒有定位不到的
3铃拇、by_partial_link,模糊匹配定位
driver.find_element(By.XPATH,"http://*[contains(text(),'hao123')]")
后續(xù)會更詳細的學習xpath定位方式