### 一、什么是 Selenium?
Selenium 是一个用于 Web 应用程序自动化测试的强大工具,它支持多种编程语言,包括 Python、Java、C# 等。Python 作为一门简洁易学的语言,结合 Selenium 可以实现高效的自动化测试和网页爬虫功能。
本文将带你从零开始,使用 Python 编写 Selenium 自动化测试脚本,涵盖基础操作、元素定位、浏览器控制等内容。
—
### 二、环境准备
#### 安装 Selenium
使用 pip 安装 Selenium:
“`bash
pip install selenium
“`
#### 安装浏览器驱动
Selenium 需要配合浏览器驱动来操作浏览器,常见的浏览器驱动有:
– Chrome: [ChromeDriver](https://sites.google.com/chromium.org/driver/)
– Firefox: [GeckoDriver](https://github.com/mozilla/geckodriver)
– Edge: [EdgeDriver](https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/)
将下载的驱动添加到系统 PATH,或在代码中指定路径。
—
### 三、第一个 Selenium 脚本
下面是一个简单的 Selenium 脚本,用于打开百度首页并搜索关键词:
“`python
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
# 创建浏览器对象(以 Chrome 为例)
driver = webdriver.Chrome()
# 打开百度
driver.get(“https://www.baidu.com”)
# 查找搜索框并输入关键词
search_box = driver.find_element(By.ID, “kw”)
search_box.send_keys(“Selenium 自动化测试”)
# 提交搜索
search_box.send_keys(Keys.RETURN)
# 等待页面加载
time.sleep(3)
# 打印当前页面标题
print(“页面标题:”, driver.title)
# 关闭浏览器
driver.quit()
“`
—
### 四、常用操作详解
#### 1. 元素定位方式
| 定位方式 | 示例 | 说明 |
|———-|——|——|
| ID | `find_element(By.ID, “username”)` | 推荐优先使用 |
| NAME | `find_element(By.NAME, “password”)` | |
| CLASS_NAME | `find_element(By.CLASS_NAME, “login-btn”)` | |
| CSS_SELECTOR | `find_element(By.CSS_SELECTOR, “input[type=’text’]”)` | |
| XPATH | `find_element(By.XPATH, “//div[@id=’content’]/p”)` | 强大但易受页面结构变化影响 |
#### 2. 浏览器操作
– 最大化窗口:`driver.maximize_window()`
– 设置窗口大小:`driver.set_window_size(1024, 768)`
– 切换标签页:`driver.switch_to.window(window_name)`
– 执行 JavaScript:`driver.execute_script(“window.scrollTo(0, document.body.scrollHeight);”)`
#### 3. 显式等待 vs 隐式等待
“`python
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 显式等待某个元素出现
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, “result”))
)
“`
—
### 五、实战案例:模拟登录 GitHub
“`python
driver = webdriver.Chrome()
driver.get(“https://github.com/login”)
# 输入用户名
driver.find_element(By.ID, “login_field”).send_keys(“your_username”)
# 输入密码
driver.find_element(By.ID, “password”).send_keys(“your_password”)
# 提交登录
driver.find_element(By.NAME, “commit”).click()
# 等待跳转
WebDriverWait(driver, 10).until(
EC.title_contains(“GitHub”)
)
print(“登录成功!当前页面标题:”, driver.title)
“`
—
### 六、注意事项
– **元素定位尽量使用 ID 或 NAME**,减少页面结构变化的影响。
– 使用 `显式等待` 替代 `time.sleep()`,提高脚本稳定性和效率。
– 测试完成后记得调用 `driver.quit()` 关闭浏览器。
– 可结合 `pytest`、`unittest` 等测试框架进行结构化测试。
—
### 七、总结
Selenium 是 Python 自动化测试中不可或缺的工具,无论是用于 UI 测试、数据采集还是自动化任务,都能发挥重要作用。掌握其基本操作和高级技巧,能显著提升测试效率和代码质量。
如果你正在学习自动化测试,Selenium + Python 是一个非常值得投入的方向!