Selenium 經常使用的定位方式8種。css
對於 Web 頁面,id
是最理想的定位方式,通常前端 HTML 代碼都會盡可能保證 id
的惟一性。前端
# find_element_by_id 的應用1:定位百度輸入框 from selenium import webdriver # 導入 webdriver 模塊 from time import sleep # 導入 sleep 模塊,能夠使程序強制休眠 driver = webdriver.Chrome() # 調用 Chrome 瀏覽器 driver.get('https://www.baidu.com') # 打開百度網站 kw_element = driver.find_element_by_id("kw") # 經過 id 屬性定位到輸入框 kw_element.send_keys("selenium") # 向輸入框寫入"selenium" sleep(5) # 強制休眠 5 秒 driver.quit() # 關閉瀏覽器
# find_element_by_id 的應用2:定位中國知網首頁的搜索輸入框 driver = webdriver.Chrome() # 調用 Chrome 瀏覽器 driver.get('https://www.cnki.net/') # 打開中國知網 search_element = driver.find_element_by_id("txt_SearchText") # 經過 id 屬性定位到搜索輸入框 search_element.send_keys("自動化測試") # 輸入內容 sleep(5) # 強制休眠 5 秒 driver.quit() # 關閉瀏覽器
經過 HTML 代碼中的 name
屬性來定位元素。 name
屬性的值有可能不是惟一的,這時,會找到多個元素,遇到此類狀況,程序會優先選擇第一個定位元素。python
# find_element_by_name 的應用1:定位百度輸入框 from selenium import webdriver # 導入 webdriver 模塊 from time import sleep # 導入 sleep 模塊,能夠使程序強制休眠 driver = webdriver.Chrome() # 調用 Chrome 瀏覽器 driver.get('https://www.baidu.com') # 打開百度網站 kw_element = driver.find_element_by_name("wd") # 經過 name 屬性定位輸入框 kw_element.send_keys("selenium") # 向輸入框寫入"selenium" sleep(5) # 強制休眠 5 秒 driver.quit() # 關閉瀏覽器
# find_element_by_name 的應用2:定位拉鉤首頁的手機號碼輸入框 driver = webdriver.Chrome() # 調用 Chrome 瀏覽器 driver.get('https://www.lagou.com/') # 打開拉勾網 search_element = driver.find_element_by_name("phone") # 經過 name 屬性定位手機號碼輸入框 search_element.click() # 點擊搜索按鈕 sleep(5) # 強制休眠 5 秒 driver.quit() # 關閉瀏覽器
經過 HTML 代碼中的 class
屬性來定位元素。web
通常不建議使用此定位方式:瀏覽器
class
屬性通常是不惟一的class
屬性存在複合類:如下這段 class
屬性就是一個複合類,每一個類用空格分隔,若是經過全匹配定位,程序會報錯測試
# 如下程序會報錯 driver = webdriver.Chrome() # 調用 Chrome 瀏覽器 driver.get('https://www.baidu.com') # 打開百度網站 kw_element = driver.find_element_by_class_name("btn self-btn bg s_btn") # 經過 class 屬性定位搜索按鈕 kw_element.click() # 點擊搜索按鈕 sleep(5) # 強制休眠 5 秒 driver.quit() # 關閉瀏覽器 # 報錯信息 # selenium.common.exceptions.NoSuchElementException: # Message: no such element: Unable to locate element: # {"method":"css selector","selector":".btn self-btn bg s_btn"}
# find_element_by_class_name 的應用1:定位百度輸入框 from selenium import webdriver # 導入 webdriver 模塊 from time import sleep # 導入 sleep 模塊,能夠使程序強制休眠 driver = webdriver.Chrome() # 調用 Chrome 瀏覽器 driver.get('https://www.baidu.com') # 打開百度網站 kw_element = driver.find_element_by_class_name("s_ipt") # 經過 class 屬性定位輸入框 kw_element.send_keys("selenium") # 向輸入框寫入"selenium" sleep(5) # 強制休眠 5 秒 driver.quit() # 關閉瀏覽器
# find_element_by_class_name 的應用2:定位中國知網首頁的搜索輸入框 driver = webdriver.Chrome() # 調用 Chrome 瀏覽器 driver.get('https://www.cnki.net/') # 打開中國知網 search_element = driver.find_element_by_class_name("search-input") # 經過 class 屬性定位到搜索輸入框 search_element.send_keys("自動化測試") # 輸入內容 sleep(5) # 強制休眠 5 秒 driver.quit() # 關閉瀏覽器