在做UI自動化的時候,可能要用到元素定位,因此,今天來細講一下xpath的元素定位
1、selenium一些基本的元素定位方法
id定位、xpath定位、css定位這三個使用較爲頻繁,必須掌握;其餘的定位方法幾乎不怎麼使用,瞭解即可。
""" id定位、xpath定位、css定位這三個使用較爲頻繁,必須掌握 其餘的定位方法幾乎不怎麼使用,瞭解即可 """ from selenium.webdriver import Chrome import time driver = Chrome() driver.get("http://www.baidu.com") # 1、通過元素的id進行定位 # driver.find_element_by_id("kw").send_keys("王者榮耀") # 輸入框的id是kw # driver.find_element_by_id("su").click() # 百度一下該按鈕的id是su # time.sleep(3) # 2、通過鏈接標籤(a標籤)的文本進行定位 # driver.find_element_by_link_text("貼吧").click() # time.sleep(3) # tips:非鏈接標籤不能使用該方法 # 3、通過鏈接標籤的文本(部分匹配)進行定位 # driver.find_element_by_partial_link_text("hao").click() # 本意是想點擊hao123這個鏈接,但是此時可以進行部分匹配就能找到 # time.sleep(3) # 4、通過標籤名去查找,此種方法不常用,容易找到多個相同的,不建議 # driver.find_element_by_tag_name("input") # time.sleep(3) # 5、通過class屬性來進行定位(如果class有多個值,則只能傳一個) # driver.find_element_by_class_name() # 6、通過name屬性來進行定位 # driver.find_element_by_name("wd") # 7、xpath定位,使用頻率最高,要填xpath的表達式 # driver.find_element_by_xpath('//*[@id="kw"]').send_keys("王者榮耀") # 8、css定位 # driver.find_element_by_css_selector('#kw').send_keys("王者榮耀") driver.quit()
標註紅色的這三種,必須熟練掌握!!!
這裏有個細微的區別,還希望多看一下
另外,有時候我們在運行時,會導致CPU佔比較多,比較卡,所以,可以用指令關掉
taskkill /f /im chromedriver.exe
2、xpath定位
絕對路徑不建議使用,稍有點改動就會出錯,一般不要去寫絕對路徑
// 從根節點開始,往下查找子孫結點
/ 根節點開始一級一級往下找子節點
* 通配符,表示任意的元素
@ 用來獲取屬性
比如: 獲取id @id
獲取title @title
獲取value @value
[] 篩選條件
舉例:
1、查找a標籤(條件:href屬性等於'http://news.baidu.com')
//a[@href='http://news.baidu.com']
2、通過本文去定位
//a[text()='新聞']
查找的函數:
contains:部分匹配的函數
//a[contains(text(),'hao')]
//a[contains(@title,'一下')]
start_with:匹配以***開頭
//a[@start_with(text(),'hao')]
xpath的表達式,不是唯一的,只要能正確的定位到元素就行
另一種方式也可以來定位
再舉一個例子
因此,定位元素的方法很明顯,就是找屬性,先看外面屬於哪種標籤,是a標籤還是span標籤還是div標籤還是input標籤等等,在[]裏面進行篩選,獲取屬性就行了
以上僅僅是較爲基礎的xpath的定位方法,當然如果你想偷懶一下也可以,直接選中'檢查"然後copy xpath也行