前言
要想操作 Web 界面上的元素,首先要定位到該元素,Selenium 提供了定位元素的 API,這些方法都被定義在 WebDriver 類中,這些方法都以 find 開頭,下面我們以百度首頁為例來看一下八種定位方法。
打開百度首頁,定位到搜索框,右鍵->檢查,查看搜索框元素。
通過元素 id 定位
方法名稱:find_element_by_id
from selenium import webdriver
import time
# 加載瀏覽器驅動
driver = webdriver.Chrome()
# 訪問百度
driver.get("https://www.baidu.com")
# 通過元素 id 定位
driver.find_element_by_id("kw").send_keys("selenium")
# 定位搜索按鈕並點擊
driver.find_element_by_id("su").click()
time.sleep(3)
# 退出瀏覽器
driver.quit()
通過元素 name 定位
方法名稱:find_element_by_name
from selenium import webdriver
import time
# 加載瀏覽器驅動
driver = webdriver.Chrome()
# 訪問百度
driver.get("https://www.baidu.com")
# 通過元素 name 定位
driver.find_element_by_name("wd").send_keys("selenium")
# 定位搜索按鈕並點擊
driver.find_element_by_id("su").click()
time.sleep(3)
# 退出瀏覽器
driver.quit()
通過元素 class 定位
方法名稱:find_element_by_class_name
from selenium import webdriver
import time
# 加載瀏覽器驅動
driver = webdriver.Chrome()
# 訪問百度
driver.get("https://www.baidu.com")
# 通過元素 class 定位
driver.find_element_by_class_name("s_ipt").send_keys("selenium")
# 定位搜索按鈕並點擊
driver.find_element_by_id("su").click()
time.sleep(3)
# 退出瀏覽器
driver.quit()
通過元素 tag 定位
方法名稱:find_element_by_tag_name,tap 名稱相同的太多了,一般不會用這個方法。
通過鏈接文本定位
方法名稱:find_element_by_link_text,精確匹配。
from selenium import webdriver
import time
# 加載瀏覽器驅動
driver = webdriver.Chrome()
# 訪問百度
driver.get("https://www.baidu.com")
# 通過鏈接文本定位
driver.find_element_by_link_text("hao123").click()
time.sleep(3)
# 退出瀏覽器
driver.quit()
通過部分鏈接文本定位
方法名稱:find_element_by_partial_link_text,模糊匹配。
from selenium import webdriver
import time
# 加載瀏覽器驅動
driver = webdriver.Chrome()
# 訪問百度
driver.get("https://www.baidu.com")
# 通過部分鏈接文本定位
driver.find_element_by_partial_link_text("hao").click()
time.sleep(3)
# 退出瀏覽器
driver.quit()
通過 css 選擇器定位
方法名稱:find_element_by_css_selector,需要重點掌握。
from selenium import webdriver
import time
# 加載瀏覽器驅動
driver = webdriver.Chrome()
# 訪問百度
driver.get("https://www.baidu.com")
# 通過 css 選擇器定位
driver.find_element_by_css_selector("#kw").send_keys("selenium")
# 定位搜索按鈕並點擊
driver.find_element_by_id("su").click()
time.sleep(3)
# 退出瀏覽器
driver.quit()
通過 xpath 定位
方法名稱:find_element_by_xpath,需要重點掌握。
from selenium import webdriver
import time
# 加載瀏覽器驅動
driver = webdriver.Chrome()
# 訪問百度
driver.get("https://www.baidu.com")
# 通過 xpath 定位
driver.find_element_by_xpath("//*[@id='kw']").send_keys("selenium")
# 定位搜索按鈕並點擊
driver.find_element_by_id("su").click()
time.sleep(3)
# 退出瀏覽器
driver.quit()