您當前的位置:首頁 > 攝影

python3 selenium 自動化測試 強大的xpath定位

作者:由 蜀山客 發表于 攝影時間:2020-10-10

path是一種在XML文件中定位元素的語言。xpath語法比較簡單,用法多,很強大的定位方法,我比較喜歡xpath。

絕對路徑定位:

假如一個人,你不知道他的任何特徵,直白來說,就是你不知道他的身份證號碼、名字、手機號等資訊,但是你知道他的位置,如xx省/ xx市/ xx區 /xx路/ xx號。你透過他的位置就可以準確找到他。從上往下查詢元素的這種方法,在selenium中我們叫絕對路徑定位。

簡單舉例:

find_element_by_xpath(‘html/body/div’)

標籤名結合元素屬性定位

find_element_by_xpath(“//標籤名[@id=‘屬性值’]”)

find_element_by_xpath(“//標籤名[@name=‘屬性值’]”)

find_element_by_xpath(“//標籤名[@class_name=‘屬性值’]”)

以上例舉三種屬性值,當然xpath不只侷限於這三種,任意元素的屬性值都是可以的,但要確保元素屬性的唯一性。這就是xpath強大的地方,相對於單調的id、name、class_name定位,xpath結合元素屬性定位元素的方法選擇性更多。

有些人喜歡把標籤名用星號“

”代替,當然也是可以的。

find_element_by_xpath(“//

[@id=‘屬性值’]”)

層級和屬性結合

假如你不知道某人的身份證號碼、名字、手機號碼等資訊時無法取得聯絡,但是你知道某人爸爸的手機號碼,此時你可以透過他爸爸來找到某人。也就是透過(“/他爸爸[phone=‘手機號’]/本人”) 找到某人。

換成術語就是當我們定位元素時,發現沒有可以標識的唯一的元素的屬性值時,那我們可以考慮用父親標籤結合屬性來定位元素。例如:

find_element_by_xpath(“//input[@id=‘屬性值’]/div”)

假如他爸爸也沒有手機號碼,此時你可以往上找他爺爺。也就是也就是透過(“/他爺爺[phone=‘手機號’]/他爸爸/本人”) 找到某人。

換成術語就是當我們定位元素時,發現父親標籤中沒有可以標識的唯一的元素的屬性值時,那我們可以考慮用爺爺標籤結合屬性來定位元素。例如:

find_element_by_xpath(“//input[@id=‘屬性值’]/div/span”)

結合邏輯運算子

假如一個標籤中有多個屬性值時,且屬性值不是唯一值時,此時我們可以用邏輯運算子連線多個屬性來定位元素。我們用and來連線兩個屬性值,例如:

find_element_by_xpath(“//input[@id=‘屬性值’ and @name=‘屬性值’]/div/span”)

當然你可以用and連線更多的屬性來加強定位,目標元素是能定到位。

有個簡單快捷的方法,從瀏覽器直接複製xpath路徑:

python3 selenium 自動化測試 強大的xpath定位

看完點贊~養成好習慣~~

標簽: 屬性  xpath  元素  Find  element