Python使用Selenium实现Web自动化的完整指南

 更新时间:2026年03月31日 08:20:15   作者:小庄-Python办公  
Selenium 是一个强大的开源 Web 自动化工具集,本文将作为一份面向完全新手的系统性指南,带你一步步了解什么是 Selenium,以及如何使用 Python 编写你的第一个 Web 自动化脚本

在当今数字化的世界中,我们每天都要在浏览器中执行大量重复的任务:填写表单、下载报表、抓取数据或是测试网页功能。如果你曾幻想过能有一个“隐形机器人”替你完成这些繁琐的点击和输入,那么 Selenium 就是你的最佳选择。

本文将作为一份面向完全新手的系统性指南,带你一步步了解什么是 Selenium,以及如何使用 Python 编写你的第一个 Web 自动化脚本。

1. 什么是 Selenium?

Selenium 是一个强大的开源 Web 自动化工具集。简单来说,它可以直接控制你的浏览器,模拟真实用户的操作(如点击、输入文本、滚动页面等)。

它最初是为自动化 Web 应用程序测试而诞生的,但由于其强大的浏览器控制能力,现在也被广泛应用于网页数据抓取(爬虫)日常任务自动化

2. 准备工作 (Prerequisites)

在开始编写代码之前,我们需要准备好开发环境。请确保你的电脑上已经安装了以下软件:

  • Python: 建议安装 Python 3.7 或更高版本。
  • Google Chrome 浏览器: 本文将以 Chrome 为例进行演示。
  • 代码编辑器: 如 VS Code、PyCharm 或简单的 IDLE。

安装必备的 Python 库

打开你的终端(Windows 的 CMD/PowerShell,或 Mac/Linux 的 Terminal),运行以下命令来安装 Selenium 和 WebDriver 管理器:

pip install selenium
pip install webdriver-manager

专业提示: webdriver-manager 是一个非常实用的辅助库。它会自动为你下载并配置与你当前 Chrome 浏览器版本匹配的驱动程序(ChromeDriver),让你免去手动下载和配置环境变量的烦恼。

3. 分步指南:编写你的第一个自动化脚本

我们将编写一个简单的脚本:自动打开浏览器,进入百度首页,搜索“Selenium 自动化”,并点击搜索按钮。

第一步:导入必要的模块

在你的代码编辑器中创建一个名为 auto_search.py 的文件,并输入以下代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import time

第二步:初始化浏览器并打开网页

接下来,我们需要启动 Chrome 浏览器并告诉它去哪个网址。

# 使用 webdriver_manager 自动配置驱动
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)

# 让浏览器全屏运行(可选)
driver.maximize_window()

# 打开百度首页
driver.get("https://www.baidu.com")

第三步:定位网页元素

为了让 Selenium 知道在哪里输入文字,我们需要“定位”那个输入框。在 Web 开发中,每个元素都有自己的 HTML 标签和属性。
百度的搜索输入框的 HTML id 属性是 kw,搜索按钮的 idsu

# 找到搜索输入框
search_box = driver.find_element(By.ID, "kw")

# 找到“百度一下”按钮
search_button = driver.find_element(By.ID, "su")

第四步:与元素进行交互

找到元素后,我们就可以模拟人类的行为了。

# 在输入框中输入文字
search_box.send_keys("Selenium 自动化")

# 等待1秒钟,以便我们能看清操作(实际开发中建议使用显式等待)
time.sleep(1)

# 点击搜索按钮
search_button.click()

# 保持结果页面打开 5 秒钟,然后关闭
time.sleep(5)

第五步:关闭浏览器

任务完成后,务必养成关闭浏览器并释放系统资源的好习惯。

# 退出浏览器并结束 WebDriver 进程
driver.quit()

完整代码示例

将上面的步骤组合起来,你的完整代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import time

def main():
    print("正在启动浏览器...")
    service = Service(ChromeDriverManager().install())
    driver = webdriver.Chrome(service=service)
    driver.maximize_window()

    try:
        print("正在打开百度...")
        driver.get("https://www.baidu.com")
        
        print("正在定位元素并搜索...")
        search_box = driver.find_element(By.ID, "kw")
        search_button = driver.find_element(By.ID, "su")
        
        search_box.send_keys("Selenium 自动化")
        time.sleep(1)
        search_button.click()
        
        print("搜索成功!等待 5 秒后关闭浏览器...")
        time.sleep(5)
        
    finally:
        driver.quit()
        print("浏览器已关闭。")

if __name__ == "__main__":
    main()

运行这个脚本,你就可以把双手离开键盘,看着电脑自动完成搜索了!

4. 常见陷阱与注意事项 (Common Pitfalls)

对于初学者来说,使用 Selenium 时最容易遇到以下几个坑:

1. 页面还没加载完就去寻找元素 (ElementNotVisibleException)

问题: 代码运行速度远快于网页加载速度。如果网页还没渲染出按钮,代码就去点击,就会报错。

解决方案: 避免使用死板的 time.sleep()。学习使用 显式等待 (Explicit Waits)。例如:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 最多等待 10 秒,直到 ID 为 'su' 的元素可被点击
button = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "su"))
)

2. 浏览器版本与驱动不匹配

  • 问题: Chrome 浏览器经常自动更新,导致旧版的 ChromeDriver 失效。
  • 解决方案: 就像我们在教程中做的那样,始终使用 webdriver-manager 库,它会在每次运行时自动检查并匹配版本。

3. 元素嵌套在 iframe 中

  • 问题: 有时候你明明看到了元素,代码却找不到它。这可能是因为该元素在一个嵌入的子网页(iframe)里。
  • 解决方案: 需要先让 WebDriver 切换到该 iframe,例如:driver.switch_to.frame("iframe_name")

5. 总结与学习资源

恭喜你!你已经成功编写并运行了你的第一个 Selenium Web 自动化脚本。我们学习了如何配置环境、打开网页、定位元素(通过 ID)以及模拟键盘输入和鼠标点击。

自动化是一个深不见底但也充满乐趣的领域。为了进一步提升你的技能,建议你探索以下主题:

  • 学习更多定位元素的方法(如 XPathCSS Selectors)。
  • 学习如何处理弹窗(Alerts)和下拉菜单(Select)。
  • 学习如何实现无头模式(Headless Mode),让浏览器在后台静默运行以提高速度。

以上就是Python使用Selenium实现Web自动化的完整指南的详细内容,更多关于Python Selenium自动化的资料请关注脚本之家其它相关文章!

相关文章

  • 为什么你还不懂得怎么使用Python协程

    为什么你还不懂得怎么使用Python协程

    这篇文章主要给大家介绍了关于为什么你还不懂得怎么使用Python协程的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • Python中出现"No module named 'requests'"的图文解决办法

    Python中出现"No module named 'requests'"

    这篇文章主要给大家介绍了关于Python中出现"No module named 'requests'"的解决办法,"No module named requests"是Python报错提示,意味着你在使用某个Python程序或脚本时,没有找到名为requests的模块,需要的朋友可以参考下
    2023-11-11
  • 简单示例解析python爬虫IP的使用(小白篇)

    简单示例解析python爬虫IP的使用(小白篇)

    这篇文章主要为大家通过简单示例解析python爬虫IP的使用介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Python3 Tensorlfow:增加或者减小矩阵维度的实现

    Python3 Tensorlfow:增加或者减小矩阵维度的实现

    这篇文章主要介绍了Python3 Tensorlfow:增加或者减小矩阵维度的实现,具有好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python制作微信好友背景墙教程(附完整代码)

    Python制作微信好友背景墙教程(附完整代码)

    这篇文章主要介绍了Python制作微信好友背景墙教程(附完整代码),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Streamlit+Echarts实现绘制精美图表

    Streamlit+Echarts实现绘制精美图表

    在数据分析和可视化的领域,选择合适的工具可以让我们事半功倍,本文主要为大家介绍两个工具,Streamlit和ECharts,感兴趣的小伙伴可以跟随小编一起了解下
    2023-09-09
  • Python通过%操作符进行取余运算与字符串格式化的深度解析

    Python通过%操作符进行取余运算与字符串格式化的深度解析

    在 Python 中,百分号 % 是一个多功能的操作符,主要有两种核心用法:取余运算(模运算)和字符串格式化,本文将详细介绍这两种用法及其实际应用场景,感兴趣的小伙伴可以了解下
    2025-09-09
  • Python中的asyncio代码详解

    Python中的asyncio代码详解

    asyncio 是用来编写 并发 代码的库,使用 async/await 语法。 asyncio 被用作多个提供高性能 Python 异步框架的基础,包括网络和网站服务,数据库连接库,分布式任务队列等等。这篇文章主要介绍了Python中的asyncio,需要的朋友可以参考下
    2019-06-06
  • 关于Python中object类特殊方法的解释

    关于Python中object类特殊方法的解释

    在学习Python的过程中我们会发现有一个类 Object类 ,它是所有类的父类,Object类规定了python用于类的内置函数,今天我们就来看看几个常用的特殊方法吧
    2023-03-03
  • python中赋值语句的特点和形式

    python中赋值语句的特点和形式

    这篇文章主要介绍了python中赋值语句的特点和形式,文中介绍了多目标赋值的共享引用问题,多目标赋值其实是多个目标对同一个内存空间的引用,这里要分两种情况,当被引用对象是不可变对象时则不存在问题,感兴趣的朋友跟随小编一起看看吧
    2023-12-12

最新评论