Selenium+Python自动化测试环境搭建全攻略:从零到一避坑指南
1. 项目概述:为什么从环境搭建开始?
如果你刚接触自动化测试,或者想用Python做点网页自动化的活儿,比如自动填表、抢票、数据抓取,那你大概率会听到Selenium这个名字。很多教程一上来就让你写代码,但十有八九,第一步“环境搭建”就能卡住一半的人。浏览器打不开、驱动对不上、包安装报错……这些问题不解决,后面的自动化都是空中楼阁。我自己带团队、做项目,见过太多新手在这第一步就放弃了,所以我觉得,把环境搭建讲透、讲稳,比直接扔一段复杂的脚本要有用得多。
这个“Selenium+Python自动化1-环境搭建”,核心目标就是给你铺一条从零到一、绝对能走通的路。它面向的是所有想入门自动化,但可能连Python都没装利索的朋友。你别看它只是“第一步”,这里面包含了工具选型的逻辑、版本匹配的“潜规则”、以及一堆只有踩过坑才知道的避雷技巧。搞定了它,你才算是拿到了进入自动化世界大门的钥匙,后续无论是写测试用例还是做爬虫,才有了稳定的基础。接下来,我会按照一个老手实际操作的顺序,带你一步步走完整个过程,并把每个环节为什么这么做、可能会遇到什么坑,都掰开揉碎了讲清楚。
2. 核心工具选型与版本协同策略
环境搭建不是简单地把几个软件装上就行,关键在于让它们“协同工作”。这里面最核心的三个部件是:Python解释器、Selenium库、以及浏览器驱动。它们的版本如果“打架”,环境就废了。
2.1 Python解释器:稳定比追新更重要
对于自动化项目,尤其是企业级应用,Python版本的稳定性是第一位的。目前主流且长期支持的版本是Python 3.8到Python 3.11。我不建议新手一上来就用最新的Python 3.12或3.13,因为一些第三方库的兼容性可能会滞后。
- 为什么选3.8+? 这个版本区间的语法成熟,生态支持极其完善,几乎所有你需要的库(包括Selenium)都有稳定版本。从3.8开始,
f-string、walrus operator等现代语法也已支持,写起代码来更简洁。 - 安装建议 :直接从Python官网下载安装包。安装时务必勾选“Add Python to PATH”(将Python添加到环境变量)。这是最关键的一步,勾选了,你才能在命令行里直接输入
python或pip命令。很多新手在命令行输入python没反应,九成是因为安装时漏了这一步。 - 验证安装 :安装完成后,打开命令行(Windows是CMD或PowerShell,Mac/Linux是Terminal),输入
python --version。如果正确显示版本号(如Python 3.10.11),说明安装和PATH配置成功。
注意:如果你的电脑上之前有老版本的Python(比如2.7),新版本安装后,命令行里
python命令指向的可能是老版本。这时可以尝试用python3 --version来检查。为了统一,我建议在后续所有命令中,如果需要明确版本,使用python3和pip3。
2.2 Selenium库:通过pip精准安装
Selenium不是一个独立软件,而是一个Python的第三方库。我们通过Python的包管理工具 pip 来安装它。这里面的门道在于版本指定和镜像源。
- 基础安装 :在命令行中输入
pip install selenium。这会安装Selenium的最新稳定版(目前是4.x系列)。4.x版本相比3.x有重大升级,API更规范,也加入了对CDP(Chrome DevTools Protocol)等新特性的支持,是绝对的首选。 - 安装特定版本 :如果你需要与某些旧项目兼容,可以指定版本,例如
pip install selenium==3.141.0。但对于新项目,不要这么做,直接用新版。 - 国内加速 :直接使用官方源下载可能会很慢。我们可以使用国内的镜像源,速度飞快。常用的有清华源、阿里源。
- 临时使用:
pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple - 设为默认(推荐):升级pip后,创建或修改配置文件。
- Windows:在用户目录(如
C:\Users\你的用户名\)下创建pip文件夹,里面新建一个pip.ini文件,内容如下:[global] index-url = https://pypi.tuna.tsinghua.edu.cn/simple trusted-host = pypi.tuna.tsinghua.edu.cn - Mac/Linux:在用户目录下创建或修改
~/.pip/pip.conf文件,内容同上。 设置好后,以后所有pip install命令都会从这个镜像源下载,体验极佳。
- Windows:在用户目录(如
- 临时使用:
2.3 浏览器与驱动:版本匹配的“生死线”
这是环境搭建中最容易出错、也最核心的一环。Selenium库本身并不包含控制浏览器的能力,它需要通过一个名为“WebDriver”的中间件来与真实的浏览器(如Chrome, Firefox)通信。这个WebDriver就是浏览器驱动。
核心关系 :Selenium库 (代码) <---> 浏览器驱动 (WebDriver) <---> 真实浏览器 (Chrome)
驱动版本必须与浏览器版本高度匹配,否则Selenium无法启动浏览器。Chrome的驱动叫ChromeDriver,Firefox的驱动叫geckodriver。
以Chrome/ChromeDriver为例,详细操作如下:
-
查看Chrome浏览器版本 :
- 打开Chrome浏览器,点击右上角三个点 -> 帮助 -> 关于Google Chrome。记下完整的版本号(例如:124.0.6367.91)。
-
下载对应版本的ChromeDriver :
- 官方渠道 :访问 ChromeDriver官网。这里你会看到很多版本。你需要下载的版本号 不一定 要完全一致,但主版本号 必须相同 。
- 匹配规则 :如果你的Chrome是124.x.x.x,那么你需要下载主版本号为124的ChromeDriver(例如124.0.6367.x)。官网通常会有提示,说明某个ChromeDriver版本支持哪些Chrome浏览器版本。
- 国内镜像 :官方下载可能很慢。你可以搜索“ChromeDriver 国内镜像”或使用淘宝的NPM镜像站,速度更快。
- 选择文件 :根据你的操作系统下载对应的压缩包(Windows是
chromedriver_win32.zip,Mac是chromedriver_mac64.zip,Linux是chromedriver_linux64.zip)。
-
放置驱动并配置PATH :
- 解压 :下载的压缩包里只有一个可执行文件
chromedriver(Windows下是chromedriver.exe)。 - 放置位置(三种方法,推荐第一种) :
- 方法一(最简单) :将
chromedriver.exe文件直接放到Python的安装目录下(或者Python安装目录下的Scripts文件夹里)。因为Python目录通常已经在系统的PATH环境变量中,这样Selenium就能自动找到它。 - 方法二(灵活) :在电脑的任意位置(比如
D:\WebDriver)创建一个专门文件夹存放驱动。然后 将这个文件夹的路径添加到系统的PATH环境变量中 。具体添加PATH的方法因操作系统而异,这里不展开,网上教程很多。 - 方法三(代码指定) :不修改PATH,而是在写Python代码时,通过
webdriver.Chrome(executable_path=‘你的驱动完整路径’)来指定。但这种方法不够优雅,且Selenium 4以后更推荐自动管理驱动。
- 方法一(最简单) :将
- 解压 :下载的压缩包里只有一个可执行文件
-
验证驱动 :打开命令行,切换到驱动所在目录,输入
chromedriver --version或chromedriver.exe --version。如果能看到版本号输出,说明驱动本身是可用的。
实操心得:浏览器会自动更新,但驱动不会。所以经常出现某天你的脚本突然跑不起来,提示“无法启动浏览器”的情况。这十有八九是Chrome自动升级后,驱动版本不匹配了。解决办法就是重新查看浏览器版本,下载对应的新驱动替换旧文件。养成定期检查的习惯,或者考虑使用后面会提到的
webdriver-manager库来自动管理驱动版本。
3. 一站式环境搭建实战流程
理论讲完了,我们从头到尾实操一遍,确保你的环境100%可用。我会以Windows系统为例,Mac和Linux用户操作逻辑类似,主要是路径和命令的微小差别。
3.1 第一步:安装并验证Python
- 访问 python.org,下载 Python 3.10.x 或 3.11.x 的安装包。
- 运行安装程序,在第一个界面最下方, 务必勾选“Add python.exe to PATH” ,然后点击“Install Now”。
- 安装完成后, 重启你的命令行终端 (这是为了让新的环境变量生效)。
- 在新终端里输入:
和python --version
两者都应正确显示版本号,无任何“不是内部或外部命令”的错误。pip --version
3.2 第二步:安装Selenium库
在终端中,使用国内镜像源快速安装:
pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple
安装完成后,可以进入Python交互模式简单验证:
python
在出现的 >>> 提示符后输入:
import selenium
print(selenium.__version__)
如果没有报错,并打印出版本号(如 4.15.2 ),说明库安装成功。输入 exit() 退出。
3.3 第三步:部署浏览器驱动(Chrome为例)
- 打开Chrome,确认版本为 124.0.6367.91(举例)。
- 打开 ChromeDriver下载页,找到主版本号为124的链接,点击进入。
- 根据你的系统,下载对应的
chromedriver_win32.zip文件。 - 解压,得到
chromedriver.exe文件。 - 找到你的Python安装目录。如果你安装时用了默认路径,通常在
C:\Users\你的用户名\AppData\Local\Programs\Python\Python310\或C:\Python310\。将chromedriver.exe复制 到这个目录下。 - 验证:打开一个新的命令行窗口(不需要在Python目录下),直接输入:
如果输出chromedriver --versionChromeDriver 124.0.6367.91 (...)等信息,恭喜你,PATH配置成功!如果提示“找不到命令”,请检查是否复制到了正确的Python目录,并确认该目录已在PATH中(可以在终端输入echo %PATH%查看是否包含Python目录)。
3.4 第四步:编写并运行第一个验证脚本
现在,所有部件都已就位。让我们用一个最简单的脚本,打开百度首页,来验证整个环境是否工作。
创建一个新的文本文件,命名为 first_test.py ,用任何文本编辑器(推荐VSCode、Sublime Text、甚至记事本)打开,输入以下代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 1. 创建浏览器驱动对象。如果驱动在PATH中,无需指定路径。
driver = webdriver.Chrome()
# 2. 使用get方法打开百度
driver.get("https://www.baidu.com")
# 3. 通过元素定位找到搜索框,并输入“Selenium”
# 这里用到了By.ID定位方式,'kw'是百度搜索框的HTML元素id
search_box = driver.find_element(By.ID, 'kw')
search_box.send_keys('Selenium环境搭建')
# 4. 找到“百度一下”按钮并点击。'su'是该按钮的id
search_button = driver.find_element(By.ID, 'su')
search_button.click()
# 5. 等待5秒,让我们能看到结果
time.sleep(5)
# 6. 关闭浏览器窗口
driver.quit()
print("第一个Selenium脚本执行成功!浏览器已自动打开并操作。")
保存文件。在命令行中,切换到该文件所在的目录,运行:
python first_test.py
你将会看到 :
- 自动弹出一个新的Chrome浏览器窗口(可能会提示“Chrome正受到自动测试软件的控制”,这是正常的)。
- 浏览器自动导航到百度首页。
- 在搜索框中自动输入“Selenium环境搭建”。
- 自动点击“百度一下”按钮进行搜索。
- 等待5秒后,浏览器自动关闭。
- 命令行输出成功信息。
如果这一切都发生了,那么你的Selenium+Python自动化环境就 完美搭建成功 了!
4. 高级配置与效率提升技巧
基础环境搭好了,但作为想要长期做自动化的人,下面这些技巧能让你事半功倍,工作更顺畅。
4.1 使用WebDriver Manager告别版本烦恼
手动管理驱动版本太麻烦了。有一个神奇的Python库叫 webdriver-manager ,它可以自动检测你电脑上安装的浏览器版本,并下载、配置对应版本的驱动。
- 安装 :
pip install webdriver-manager - 修改你的脚本 :不再需要手动下载和配置PATH。
第一次运行时会自动下载驱动,以后就会检查版本并复用,彻底解放双手。同样支持Firefox (from selenium import webdriver from selenium.webdriver.common.by import By from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.service import Service # 使用Service对象和ChromeDriverManager service = Service(ChromeDriverManager().install()) driver = webdriver.Chrome(service=service) driver.get("https://www.baidu.com") # ... 后续操作 driver.quit()GeckoDriverManager)、Edge等。
4.2 浏览器启动选项优化
默认启动的浏览器带有“受自动化控制”的提示,且不是全屏。我们可以通过 Options 对象进行优化。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('--start-maximized') # 启动时最大化窗口
chrome_options.add_argument('--disable-infobars') # 禁用“Chrome正受到自动测试软件的控制”提示(新版本可能无效)
chrome_options.add_argument('--no-sandbox') # 在Linux环境下有时需要
chrome_options.add_argument('--disable-dev-shm-usage') # 解决Linux下共享内存问题
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation']) # 更高级的隐藏自动化特征
chrome_options.add_experimental_option('useAutomationExtension', False)
# 将options传入
driver = webdriver.Chrome(options=chrome_options)
这些选项能让你启动的浏览器更接近真实用户使用的状态,对于绕过一些简单的反爬机制也有帮助。
4.3 集成开发环境(IDE)配置
虽然用记事本也能写代码,但一个好的IDE能极大提升效率。 强烈推荐使用VSCode 。
- 安装VSCode 。
- 安装Python扩展 :在VSCode扩展商店搜索“Python”,安装Microsoft官方发布的那个。
- 配置Python解释器 :按
Ctrl+Shift+P,输入“Python: Select Interpreter”,选择你安装的Python版本。 - 安装代码提示和格式化工具 :在VSCode的终端里,可以安装
pylint和autopep8。
然后在VSCode设置中搜索“formatting”,确保Python的格式化工具是pip install pylint autopep8autopep8。这样你保存代码时就会自动格式化。 - 运行和调试 :在代码文件里点击右键,选择“Run Python File in Terminal”,或者使用调试功能设置断点,可以逐行查看代码执行和变量状态,对于调试Selenium脚本非常有用。
5. 环境搭建常见问题与排查实录
即使按照步骤来,也可能遇到各种“妖魔鬼怪”。这里我整理了最常见的问题和解决方法,基本能覆盖90%的情况。
5.1 浏览器驱动相关问题
问题1: selenium.common.exceptions.WebDriverException: Message: ‘chromedriver’ executable needs to be in PATH.
- 原因 :系统找不到
chromedriver。 - 解决 :
- 确认
chromedriver.exe已放在Python安装目录或已添加到PATH的目录。 - 在命令行任意路径输入
chromedriver --version测试。如果失败,检查PATH。 - 或者,在代码中指定绝对路径(不推荐长期使用):
driver = webdriver.Chrome(executable_path=r‘C:\path\to\your\chromedriver.exe’) - 最佳实践 :直接使用
webdriver-manager库。
- 确认
问题2: session not created: This version of ChromeDriver only supports Chrome version XX
- 原因 :ChromeDriver版本与Chrome浏览器版本不匹配。
- 解决 :
- 检查Chrome浏览器版本。
- 去官网下载对应 主版本号相同 的ChromeDriver。
- 替换旧的驱动文件。
- 一劳永逸 :使用
webdriver-manager。
问题3:浏览器闪退或无法启动
- 原因 :
- 浏览器正在运行中,且开启了用户数据目录(profile)的多个实例冲突。
- 杀毒软件或防火墙拦截。
- 驱动与浏览器位数不匹配(32位 vs 64位)。
- 解决 :
- 关闭所有已打开的Chrome浏览器窗口。
- 在代码中尝试添加
--no-sandbox和--disable-dev-shm-usage参数(见4.2节)。 - 临时关闭杀毒软件试试。
- 确保下载的ChromeDriver位数与你的Chrome浏览器位数一致(现在基本都是64位)。
5.2 Python与Selenium库相关问题
问题4: ModuleNotFoundError: No module named ‘selenium’
- 原因 :Selenium库没有安装,或者安装在了另一个Python环境下。
- 解决 :
- 确认你运行脚本使用的Python和安装Selenium的Python是同一个。在命令行分别用
python --version和pip --version查看路径。 - 如果存在多个Python,使用
python -m pip install selenium来确保为当前Python安装。 - 在VSCode中,检查右下角选择的Python解释器是否正确。
- 确认你运行脚本使用的Python和安装Selenium的Python是同一个。在命令行分别用
问题5: SyntaxError 或 AttributeError ,提示 find_element_by_id 找不到
- 原因 :你使用了Selenium 3的旧版API,但安装的是Selenium 4。Selenium 4中推荐使用新的
find_element(By.ID, “id”)方式。 - 解决 :按照本文3.4节的示例代码,导入
By并使用新的定位方式。这是新旧版本最主要的区别之一。
5.3 网络与运行环境问题
问题6:脚本运行慢,或下载驱动、安装库超时
- 原因 :网络连接国外服务器慢。
- 解决 :
- 为
pip配置国内镜像源(见2.2节)。 - 对于
webdriver-manager,它默认也会从国外下载。可以尝试在代码中设置环境变量,指向国内镜像(如果该镜像站提供驱动下载)。 - 手动下载驱动并放置到指定目录,然后让
webdriver-manager知道本地已有,避免下载。
- 为
问题7:在Linux服务器或无图形界面环境下运行失败
- 原因 :Selenium需要启动一个真实的浏览器,而无图形界面(Headless)服务器没有显示设备。
- 解决 :使用无头(Headless)模式。
这样,所有操作都在后台进行,非常适合服务器自动化。from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument('--headless') # 启用无头模式 chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage') driver = webdriver.Chrome(options=chrome_options) driver.get("https://www.baidu.com") print(driver.title) # 在终端打印页面标题,而不打开浏览器窗口 driver.quit()
环境搭建是自动化万里长征的第一步,也是最需要耐心和细心的一步。很多人在这一步被劝退,仅仅是因为一个驱动版本不对或者PATH没设置好。我希望通过这篇近万字的详细拆解,能帮你把这条路彻底铺平。记住,环境搭建的核心逻辑就是 “Python装好 -> 库管好 -> 驱动版本对得上” 。当你成功运行第一个脚本,看到浏览器自动弹开并操作时,那种成就感就是坚持下去的最大动力。接下来,你就可以深入去学习元素定位、等待机制、框架设计等更精彩的内容了。
更多推荐



所有评论(0)