Selenium基礎操作方法詳解:從零開始編寫自動化腳本(附完整代碼)
引言
Selenium是自動化測試和網頁操作的利器,但對于新手來說,掌握基礎操作是成功的第一步。本文將手把手教你使用Selenium完成瀏覽器初始化、元素定位、表單操作等核心功能,并提供可直接運行的Python代碼示例,助你快速入門!
一、環境準備
在開始前,確保已安裝以下內容:
- 安裝Selenium庫
pip install selenium
- 下載瀏覽器驅動
- Chrome驅動:ChromeDriver下載地址
- Chrome最新:ChromeDriver新版本下載地址
- Firefox驅動:GeckoDriver下載地址
- 將驅動文件放在系統路徑(如項目目錄)或配置環境變量。
- 站內chromedriver下載地址:站內ChromeDriver下載
二、初始化瀏覽器驅動
以Chrome為例,啟動瀏覽器并打開網頁:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service# 指定驅動路徑(根據實際路徑修改)
service = Service(executable_path="chromedriver.exe") # 根據實際路徑修改
driver = webdriver.Chrome(service=service)# 打開網頁
driver.get("https://www.example.com")# 最大化瀏覽器窗口
driver.maximize_window()
三、元素定位與操作
1. 八大元素定位方式
from selenium.webdriver.common.by import By# 通過ID定位(最常用)
element = driver.find_element(By.ID, "username")# 通過Class Name定位
element = driver.find_element(By.CLASS_NAME, "input-field")# 通過標簽名定位
element = driver.find_element(By.TAG_NAME, "input")# 通過Name屬性定位
element = driver.find_element(By.NAME, "password")# 通過鏈接文本定位(精確匹配)
element = driver.find_element(By.LINK_TEXT, "點擊登錄")# 通過部分鏈接文本定位(模糊匹配)
element = driver.find_element(By.PARTIAL_LINK_TEXT, "登錄")# 通過CSS選擇器定位(推薦)
element = driver.find_element(By.CSS_SELECTOR, "#submit-btn .icon")# 通過XPath定位(復雜結構適用)
element = driver.find_element(By.XPATH, "//div[@id='header']//a[text()='首頁']")
2. 輸入文本與點擊按鈕
# 在輸入框輸入內容
driver.find_element(By.ID, "search-box").send_keys("Selenium教程")# 點擊按鈕
driver.find_element(By.CSS_SELECTOR, "#search-button").click()# 清空輸入框
driver.find_element(By.ID, "search-box").clear()
四、頁面導航與窗口操作
# 刷新頁面
driver.refresh()# 后退到上一頁
driver.back()# 前進到下一頁
driver.forward()# 獲取當前頁面標題
print(driver.title)# 獲取當前URL
print(driver.current_url)# 切換瀏覽器標簽頁
for handle in driver.window_handles:driver.switch_to.window(handle) # 切換到最新打開的標簽頁
五、處理表單與下拉菜單
from selenium.webdriver.support.select import Select# 選擇單選按鈕
driver.find_element(By.CSS_SELECTOR, "input[type='radio'][value='male']").click()# 勾選復選框
checkbox = driver.find_element(By.ID, "agree-terms")
if not checkbox.is_selected():checkbox.click()# 操作下拉菜單
dropdown = Select(driver.find_element(By.ID, "country"))
dropdown.select_by_visible_text("中國") # 按文本選擇
dropdown.select_by_value("CN") # 按value屬性選擇
dropdown.select_by_index(1) # 按索引選擇
六、等待機制
1. 強制等待(不推薦,僅用于測試)
import time
time.sleep(3) # 強制等待3秒
2. 隱式等待(全局設置)
driver.implicitly_wait(10) # 最多等待10秒,找不到元素則報錯
3. 顯式等待(推薦)
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 等待元素可見
element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.ID, "loading"))
)# 等待元素可點擊
button = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "submit-btn"))
)
七、截圖與關閉瀏覽器
# 截取整個頁面并保存
driver.save_screenshot("screenshot.png")# 關閉當前標簽頁
driver.close()# 完全退出瀏覽器
driver.quit()
八、完整案例:自動化搜索
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 初始化瀏覽器
service = Service(executable_path="chromedriver.exe") # 根據實際路徑修改
driver = webdriver.Chrome(service=service)
driver.get("https://www.baidu.com")# 輸入關鍵詞并搜索
search_box = driver.find_element(By.ID, "kw")
search_box.send_keys("Selenium自動化測試")
search_box.submit() # 提交表單# 等待結果加載
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, "h3"))
)# 打印第一條結果的標題
results = driver.find_elements(By.CSS_SELECTOR, "h3")
print("第一條結果:", results[0].text)# 關閉瀏覽器
driver.quit()
注意:示例代碼 chromedriver.exe
放置在腳本的同級目錄下,請根據實際情況修改。
結語
通過本文的代碼示例,你已經掌握了Selenium的基礎操作,包括瀏覽器控制、元素定位、表單填寫和等待機制。接下來,可以嘗試以下練習:
- 編寫一個自動化登錄腳本
- 爬取動態加載的網頁數據
- 實現多標簽頁切換操作