Python Selenium库全面解析与详解

一、Selenium 库简介

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

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

 

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

    bash

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

 

三、核心功能与常用函数
1. 浏览器操作
函数/方法 功能描述 示例代码
​**webdriver.Chrome()** 创建 Chrome 浏览器实例 python<br>from selenium import webdriver<br>driver = webdriver.Chrome()
​**driver.get(url)** 打开指定网页 python<br>driver.get("https://www.baidu.com")
​**driver.title** 获取当前页面标题 python<br>print("标题:", driver.title)
​**driver.quit()** 关闭浏览器并释放资源(必用) python<br>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<br>search_box = driver.find_element(By.ID, "kw")<br>search_box.send_keys("Python")
​**click()** 点击元素(按钮、链接等) python<br>login_button.click()
​**clear()** 清空输入框内容 python<br>search_box.clear()
​**submit()** 提交表单(等效于回车键) python<br>search_box.submit()
​**text 属性** 获取元素文本内容 python<br>print("按钮文本:", button.text)

 

4. 等待机制

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

等待类型 描述 代码示例
隐式等待 全局等待,设置最长等待时间(默认 0 秒) python<br>driver.implicitly_wait(10) # 所有元素查找最多等 10 秒
显式等待 针对特定条件灵活等待(推荐) python<br>from selenium.webdriver.support.ui import WebDriverWait<br>from selenium.webdriver.support import expected_conditions as EC<br>element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "dynamic_element")))

 5. 高级交互

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

 

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

 

作者:wanglaqqqq

物联沃分享整理
物联沃-IOTWORD物联网 » Python Selenium库全面解析与详解

发表回复