> 技术文档 > Python-Selenium 库详解_selenium库

Python-Selenium 库详解_selenium库


一、Selenium 库简介

Selenium 是 Python 生态中 ​最主流的 Web 自动化测试工具,支持通过代码模拟用户操作浏览器行为。其核心特性包括:

  1. 多浏览器支持:兼容 Chrome、Firefox、Edge、Safari 等主流浏览器。
  2. 跨平台性:可在 Windows、macOS、Linux 上运行,适配不同开发环境。
  3. 功能覆盖全面:支持点击、输入、拖拽、文件上传、弹窗处理等操作,满足自动化测试、爬虫、数据采集等场景需求。
  4. 动态内容处理:通过等待机制(显式/隐式)解决 AJAX 加载、动态渲染等问题。

 

二、安装与配置
  1. 安装库

    bash

    pip install selenium
  2. 下载浏览器驱动​(以 Chrome 为例):
    • 从 ChromeDriver 官网下载对应浏览器版本的驱动。
    • 将驱动文件路径添加到系统环境变量,或在代码中指定路径。

 

三、核心功能与常用函数
1. 浏览器操作
函数/方法 功能描述 示例代码 ​**webdriver.Chrome()** 创建 Chrome 浏览器实例 python
from selenium import webdriver
driver = webdriver.Chrome()
​**driver.get(url)** 打开指定网页 python
driver.get(\"https://www.baidu.com\")
​**driver.title** 获取当前页面标题 python
print(\"标题:\", driver.title)
​**driver.quit()** 关闭浏览器并释放资源(必用) python
driver.quit()
2. 元素定位

Selenium 提供 ​8 种元素定位方式,常用方法如下:

定位方式 函数示例 适用场景 ​ID driver.find_element(By.ID, \"username\") 元素有唯一 ID 时首选 ​XPath driver.find_element(By.XPATH, \"//input[@class=\'search\']\") 复杂结构页面,需精准定位 ​CSS 选择器 driver.find_element(By.CSS_SELECTOR, \"#submit > span\") 性能优于 XPath,推荐使用 ​类名(Class Name)​ driver.find_element(By.CLASS_NAME, \"btn-primary\") 元素有唯一类名时适用 ​链接文本(Link Text)​ driver.find_element(By.LINK_TEXT, \"立即登录\") 定位超链接文本完全匹配 ​部分链接文本 driver.find_element(By.PARTIAL_LINK_TEXT, \"登录\") 超链接文本模糊匹配 ​标签名(Tag Name)​ driver.find_element(By.TAG_NAME, \"input\") 定位标签类型(如所有输入框) ​Name 属性 driver.find_element(By.NAME, \"password\") 元素有 name 属性时适用

 3. 元素操作

函数/方法 功能描述 示例代码 ​**send_keys(text)** 向输入框输入文本 python
search_box = driver.find_element(By.ID, \"kw\")
search_box.send_keys(\"Python\")
​**click()** 点击元素(按钮、链接等) python
login_button.click()
​**clear()** 清空输入框内容 python
search_box.clear()
​**submit()** 提交表单(等效于回车键) python
search_box.submit()
​**text 属性** 获取元素文本内容 python
print(\"按钮文本:\", button.text)

 

4. 等待机制

处理动态加载内容的关键方法:

等待类型 描述 代码示例 ​隐式等待 全局等待,设置最长等待时间(默认 0 秒) python
driver.implicitly_wait(10) # 所有元素查找最多等 10 秒
显式等待 针对特定条件灵活等待(推荐) 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, \"dynamic_element\")))

 5. 高级交互

功能 实现方法 示例代码 ​鼠标操作 使用 ActionChains 类模拟悬停、拖拽等行为 python
from selenium.webdriver.common.action_chains import ActionChains
actions = ActionChains(driver)
actions.drag_and_drop(source, target).perform()
键盘操作 通过 Keys 类模拟快捷键(如回车、Ctrl+C) python
from selenium.webdriver.common.keys import Keys
search_box.send_keys(Keys.CONTROL + \'a\')
文件上传 通过 send_keys() 直接传入文件路径 python
upload_element = driver.find_element(By.ID, \"file_input\")
upload_element.send_keys(\"/path/to/file.png\")
弹窗处理 切换至弹窗并操作(确认/取消) python
alert = driver.switch_to.alert
alert.accept() # 确认
切换窗口/标签页 通过窗口句柄管理多窗口 python
handles = driver.window_handles
driver.switch_to.window(handles[1])
执行 JavaScript 直接运行 JS 代码(如滚动页面) python
driver.execute_script(\"window.scrollTo(0, document.body.scrollHeight);\")
截图功能 保存页面或元素截图 python
driver.save_screenshot(\"page.png\")
element.screenshot(\"element.png\")

 

四、应用场景
  1. 自动化测试
    • 验证 Web 应用功能(如登录、表单提交)。
    • 跨浏览器兼容性测试。
  2. 数据采集
    • 抓取动态渲染的网页数据(如电商价格、社交媒体内容)。
  3. 业务流程自动化
    • 自动填写报表、批量上传文件。
    • 定时签到、抢购脚本。
五、注意事项
  1. 驱动版本匹配
    • 浏览器与驱动版本需严格对应,否则会报错。
  2. 反爬机制规避
    • 添加随机等待、使用代理 IP 避免被封禁。
  3. 性能优化
    • 使用 find_elements(返回列表)替代多次 find_element
    • 避免不必要的全局隐式等待。
  4. 异常处理
    • 捕获 NoSuchElementExceptionTimeoutException 等常见异常。