selenium元素定位方式xpath總結


一.絕對路徑(不要使用,除非已經使用了所有方式仍然無法定位)
方法:根據實際目錄,逐層輸寫。
例子: find_element_by_xpath("/html/body/div[2]/form/span/input") #div[2]指第2個元素
二.相對路徑(建議使用)

方法:首先找目錄元素是否有”精准元素“即唯一能標識的屬性,找到,則用此屬性定位;

1. 通過元素本身的唯一屬性定位

   方法:找到目標元素所在的”精准元素“即唯一標識屬性,使用此屬性定位

1.1 通過id屬性定位
      例:find_element_by_xpath("//input[@id='input']")        #@后跟屬性,可以是任何屬性

1.2 通過name屬性定位
      例:find_element_by_xpath("//div[@name='q']")

2. 通過上一級目錄的唯一屬性定位

    方法:目標元素沒有唯一屬性,則去找到與目標元素相近的上級目錄中”唯一元素“作為起始位置,然后根據此相對位置逐層往子目錄編寫到目標位置

例:  find_element_by_xpath("//span[@id='input-container']/input") 

        find_element_by_xpath("//div[@id='hd']/form/span/input")

       find_element_by_xpath("//div[@name='q']/form/span/input")

3.  xpath做布爾邏輯運算
例子:find_element_by_xpath("//div[@id='hd' or @name='q']")
4. 雙條件同時過濾
      find_element_by_xpath("//div[@id='hd'][@name='q'")

5.目錄元素存在層級關系

 

 

 

例1: find_element_by_xpath("//ul[@class='app-list']/li[contains(@class,'safe')]/div")
 例2:定位上一層再定位目標元素(定位dl再定位dt)

find_element_by_xpath("//form[@id='J_login_form]/dl/dt/input[@id='J_password']")

 


 
6. 模糊定位

 

 

6.1 contains 方法(包含)

find_element_by_xpath("//a[contains(@name,'trnews')]")

6.2 start-with方法(以XX開頭)

find_element_by_xpath("//a[start-with(@href,'http')]")

6.3 text方法

find_element_by_xpath("//a[contains(text(),'新聞')]")  查找超鏈接元素的文本內容

find_element_by_xpath("//*[text()='新聞']")  查找所有內容為退出二字的元素

注意:元素屬性值有空格時,盡量不使用帶空格,可用contains等其他方法,避開空格
---------------------
版權聲明:本文為CSDN博主「hou_angela」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/hou_angela/article/details/80305828


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM