selenium 定位方式1

Selenium 經常使用的定位方式8種。css

1. find_element_by_id

對於 Web 頁面,id最理想的定位方式,通常前端 HTML 代碼都會盡可能保證 id 的惟一性。前端

1.1 find_element_by_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()  # 關閉瀏覽器

2. find_element_by_name

經過 HTML 代碼中的 name 屬性來定位元素。 name 屬性的值有可能不是惟一的,這時,會找到多個元素,遇到此類狀況,程序會優先選擇第一個定位元素python

2.1 find_element_by_name 應用

# 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()  # 關閉瀏覽器

3. find_element_by_class_name

經過 HTML 代碼中的 class 屬性來定位元素。web

通常不建議使用此定位方式瀏覽器

  1. class 屬性通常是不惟一的
  2. 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"}

3.1 find_element_by_class_name 應用

# 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()  # 關閉瀏覽器

總結

相關文章
相關標籤/搜索