Selenium Python 配置完整指南
本指南将带你一步步完成 Selenium 的环境配置,并成功运行你的第一个自动化测试脚本。

第一步:环境准备
在开始之前,请确保你已经安装了以下工具:
-
Python:
- Selenium 是一个 Python 库,所以你必须先安装 Python。
- 前往 Python 官网 下载并安装最新稳定版。
- 重要: 安装时,请务必勾选 "Add Python to PATH" (将 Python 添加到环境变量) 选项,这样你就可以在命令行中直接使用
python命令。
-
包管理工具 (pip):
pip是 Python 的包安装工具,Python 安装时会自动自带,你可以在命令行中输入pip --version来检查是否已安装。
-
代码编辑器 (IDE):
(图片来源网络,侵删)- 一个好的编辑器能让你更高效地编写代码,推荐使用:
- Visual Studio Code (VS Code): 免费、功能强大,插件生态丰富。
- PyCharm: 专业的 Python IDE,社区版免费。
- Sublime Text: 轻量级,启动迅速。
- 一个好的编辑器能让你更高效地编写代码,推荐使用:
第二步:安装 Selenium 库
这是最核心的一步,我们将使用 pip 来安装 Selenium。
-
打开终端/命令行:
- Windows: 打开 "命令提示符" (CMD) 或 "PowerShell"。
- macOS: 打开 "终端" (Terminal)。
- Linux: 打开终端。
-
执行安装命令: 在终端中输入以下命令并按回车:
pip install selenium
- 如果你的系统中有多个 Python 版本,你可能需要使用
pip3来确保安装到正确的 Python 3 环境中:pip3 install selenium
- 如果你的系统中有多个 Python 版本,你可能需要使用
-
验证安装: 安装完成后,你可以通过以下命令来验证 Selenium 是否已成功安装:
pip show selenium
如果看到版本号等信息,说明安装成功。
第三步:下载浏览器驱动
Selenium 本身不控制浏览器,它通过一个叫做 WebDriver 的中间件来与浏览器进行通信,你需要为你要使用的浏览器下载对应的驱动程序。
以最常用的 Chrome 浏览器为例:
-
检查 Chrome 版本:
- 打开 Chrome 浏览器。
- 点击右上角的三个点 -> “帮助” -> “Google Chrome”。
- 记下你的 Chrome 版本号(
0.6312.58)。
-
下载 ChromeDriver:
- 访问 ChromeDriver 的官方下载页面:https://googlechromelabs.github.io/chrome-for-testing/
- 在这个页面,找到与你 Chrome 版本最匹配的
chromedriver。 - 下载对应你操作系统和 Python 架构(64位或32位)的文件,通常下载
win64或mac-x64即可。 - 下载的是一个
.zip压缩包。
-
配置 ChromeDriver:
- 方法一(推荐,无需配置环境变量):
- 将下载的
chromedriver.exe(Windows) 或chromedriver(macOS/Linux) 文件解压出来。 - 将这个文件放在你的 Python 脚本所在的同一个文件夹里,这样 Selenium 就能自动找到它。
- 将下载的
- 方法二(配置环境变量):
- 将解压出的
chromedriver.exe或chromedriver文件放到一个固定的路径下(C:\WebDriver)。 - 将这个路径添加到系统的环境变量
PATH中,这样你就可以在任何地方运行它。
- 将解压出的
- 方法一(推荐,无需配置环境变量):
第四步:编写并运行你的第一个脚本
万事俱备,让我们来写代码!
-
创建一个 Python 文件: 在你的项目文件夹中创建一个新文件,命名为
first_script.py。 -
编写脚本代码: 将以下代码复制到
first_script.py文件中。# 1. 导入所需的库 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options from selenium.common.exceptions import NoSuchElementException import time # 2. 设置 ChromeDriver 的路径 # 如果你把 chromedriver.exe 放在了脚本同目录下,可以直接用文件名 # 如果放在了系统环境变量 PATH 中,这里可以省略 # CHROMEDRIVER_PATH = './chromedriver' # Windows: './chromedriver.exe' # SERVICE = Service(executable_path=CHROMEDRIVER_PATH) # 3. 配置浏览器选项(可选) chrome_options = Options() # 设置为无头模式,即在后台运行,不弹出浏览器窗口 # chrome_options.add_argument('--headless') # 禁用图片加载,可以加快速度 # chrome_options.add_argument('--blink-settings=imagesEnabled=false') # 解决一些 SSL 证书问题 chrome_options.add_argument('--ignore-certificate-errors') # 4. 初始化 WebDriver # 如果你使用了 Service 对象,需要传入 service 参数 # driver = webdriver.Chrome(service=SERVICE, options=chrome_options) # chromedriver 在 PATH 中,可以直接这样写 driver = webdriver.Chrome(options=chrome_options) try: # 5. 打开目标网页 print("正在打开百度首页...") driver.get("https://www.baidu.com") # 6. 验证页面标题 assert "百度一下" in driver.title print("成功打开百度首页!") # 7. 找到搜索框元素 # 使用 By.NAME 定位,因为百度搜索框的 name 属性是 'wd' search_box = driver.find_element(By.NAME, 'wd') # 8. 在搜索框中输入文字 print("正在输入搜索关键词:Selenium Python") search_box.send_keys("Selenium Python") # 9. 模拟按下回车键进行搜索 search_box.send_keys(Keys.RETURN) # 10. 等待几秒钟,以便查看搜索结果 print("等待 3 秒以显示搜索结果...") time.sleep(3) # 强制等待,不推荐在生产代码中使用,仅用于演示 # 11. 验证搜索结果页面 assert "Selenium Python" in driver.title print("搜索完成,页面标题已更新。") finally: # 12. 关闭浏览器 print("正在关闭浏览器...") driver.quit() -
运行脚本:
- 打开终端/命令行。
- 使用
cd命令切换到你的脚本所在的目录。 - 运行脚本:
python first_script.py
如果一切顺利,你将看到 Chrome 浏览器自动打开,访问百度,输入“Selenium Python”,然后回车,最后自动关闭,终端中也会打印出相应的日志信息。
第五步:核心概念解析
webdriver.Chrome(): 这是创建一个 Chrome 浏览器实例的入口,它会启动一个浏览器进程。driver.get(url): 导航到指定的 URL。- *`driver.find_element(By., 'value')`**: 定位页面上的单个元素。
By是一个枚举类,提供了多种定位方式:By.ID: 通过元素的id属性定位(最快、最推荐)。By.NAME: 通过元素的name属性定位。By.CLASS_NAME: 通过元素的class属性定位。By.TAG_NAME: 通过 HTML 标签名定位(如div,a)。By.XPATH: 通过 XPath 路径定位(非常强大,但语法较复杂)。By.CSS_SELECTOR: 通过 CSS 选择器定位(推荐,比 XPath 更简洁)。
- **`element.send_keys(keys)``: 在元素中输入文本或模拟按键。
driver.quit()vsdriver.close():driver.quit(): 关闭整个浏览器进程,释放所有资源。强烈推荐在脚本结束时使用。driver.close(): 只关闭当前活动的标签页或窗口,如果只有一个窗口,效果和quit一样,但如果有多个窗口,只会关闭当前这一个。
- 等待策略:
time.sleep()是“硬性等待”,它会让脚本暂停固定时间,不管元素是否已经加载好,这会导致效率低下且不稳定,更好的方式是“显式等待” (Explicit Wait),它会等待某个条件满足(如元素可见)后再继续执行,超时则抛出异常。
显式等待示例:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 等待最多10秒,直到id为'myDynamicElement'的元素出现
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, 'myDynamicElement'))
)
print("元素已找到!")
except NoSuchElementException:
print("在10秒内未找到元素!")
常见问题与解决方案
-
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version X- 原因: 你的 Chrome 浏览器版本和下载的 ChromeDriver 版本不匹配。
- 解决: 重新访问 Chrome for Testing 下载与你当前 Chrome 版本完全一致的 ChromeDriver。
-
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH- 原因: Selenium 找不到
chromedriver.exe文件。 - 解决:
- 简单方法: 将
chromedriver.exe文件复制到你的 Python 脚本同目录下。 - 标准方法: 将
chromedriver.exe所在的文件夹路径添加到系统的PATH环境变量中。
- 简单方法: 将
- 原因: Selenium 找不到
-
脚本运行时,浏览器一闪而过,没有执行任何操作就关闭了。
- 原因: 代码中可能出现了未捕获的异常,导致
try...finally块中的finally部分被执行,从而调用了driver.quit()。 - 解决: 仔细检查你的代码,确保所有可能出错的步骤都被
try...except包裹,并打印出异常信息,以便定位问题。
- 原因: 代码中可能出现了未捕获的异常,导致
-
定位元素失败,报
NoSuchElementException。- 原因:
- 元素选择器写错了。
- 页面加载太慢,脚本在元素出现前就开始查找。
- 元素在
<iframe>内,需要先切换到该iframe。 - 元素被其他元素遮挡(如弹窗)。
- 解决:
- 使用浏览器开发者工具(F12)检查元素,确保选择器正确。
- 使用 显式等待 代替硬性等待。
- 如果元素在
iframe中,先执行driver.switch_to.frame('frame_name_or_id'),操作完成后再用driver.switch_to.default_content()切换回来。
- 原因:
希望这份详细的指南能帮助你成功配置并开始使用 Selenium Python!祝你自动化测试顺利!
