python3 selenium 自動化測試 強大的xpath定位
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路徑:
看完點贊~養成好習慣~~
上一篇:晨昏線上的緯度差如何求?
下一篇:約拍是什麼啊?怎麼拍呢?