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的基础操作,包括浏览器控制、元素定位、表单填写和等待机制。接下来,可以尝试以下练习:
- 编写一个自动化登录脚本
- 爬取动态加载的网页数据
- 实现多标签页切换操作