3、Selenium基础:Selenium WebDriver原理、环境搭建、浏览器驱动配置、第一个自动化脚本

好,咱们今天聊聊Selenium。说实话,这玩意儿几乎是每个自动化测试工程师的入门必修课。我当年刚接触自动化时,第一个上手的工具就是它。你想想看,一个能模拟真实用户操作浏览器的工具,多酷啊。

3.1 Selenium WebDriver 原理:它到底是怎么工作的?

很多人一上来就写代码,但我觉得,先搞懂原理很重要。WebDriver 说白了,就是一套标准协议——它定义了你写的代码怎么跟浏览器“对话”。

具体流程是这样的:

  • 你的测试脚本(比如Python写的)通过 WebDriver 的 API 发送指令。
  • 这些指令被封装成 HTTP 请求,发给浏览器驱动(比如 ChromeDriver)。
  • 浏览器驱动再把这些请求翻译成浏览器能听懂的命令。
  • 浏览器执行操作(点击、输入、跳转等),然后把结果原路返回。

嗯,这里要注意:WebDriver 不是直接操作浏览器内核的,它走的是浏览器厂商提供的调试接口。所以每个浏览器都有自己的驱动,不能混用。

核心要点: WebDriver 是一种远程控制协议,它让我们的代码能像真实用户一样操作浏览器。你写的 find_element 和 click,本质上都是在发 HTTP 请求。

我在项目中遇到过一个问题:脚本在本地跑得好好的,一上 CI 服务器就报错。查了半天,发现是服务器上的浏览器版本和驱动版本不匹配。所以,版本管理真的很重要。

3.2 环境搭建:别在这步卡住

环境搭建其实不难,但细节多。我建议你按这个顺序来:

  1. 安装 Python —— 推荐 3.8 以上版本。我个人习惯用 pyenv 管理多版本,省心。
  2. 安装 Selenium 库 —— 一行命令搞定:pip install selenium
  3. 下载浏览器驱动 —— 这是最容易踩坑的地方。

小技巧: 别手动下载驱动了。用 webdriver-manager 这个库,它能自动帮你匹配版本。安装命令:pip install webdriver-manager

我曾经有一次,为了给团队配置统一的环境,手动下载了五个版本的 ChromeDriver,结果发现每个版本对应不同的 Chrome 版本。后来改用 webdriver-manager,世界清净了。

3.3 浏览器驱动配置:别小看这一步

驱动配置,说白了就是告诉 Selenium:“嘿,我要用哪个浏览器,驱动在哪儿”。

最传统的方式是这样的:

from selenium import webdriver

# 手动指定驱动路径
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')

但这种方式有个问题:你换台机器就得改路径。所以我更推荐用 webdriver-manager:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

# 自动管理驱动
driver = webdriver.Chrome(ChromeDriverManager().install())

你看,代码简洁多了。而且它还会自动检测你本地的 Chrome 版本,下载对应的驱动。

注意: 如果你用的是 Firefox,驱动叫 geckodriver;Edge 的话,用 EdgeDriver。别搞混了。我曾经见过有人用 ChromeDriver 去驱动 Firefox,结果折腾了半天。

3.4 第一个自动化脚本:打开百度,搜索“Selenium”

好了,理论说完了,咱们来写点实际的。第一个脚本,我建议你从最简单的开始:打开一个网页,做个搜索。

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

# 1. 启动浏览器
driver = webdriver.Chrome(ChromeDriverManager().install())

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

# 3. 找到搜索框,输入关键词
search_box = driver.find_element(By.ID, "kw")
search_box.send_keys("Selenium")

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

# 5. 等几秒,看看结果
time.sleep(3)

# 6. 关闭浏览器
driver.quit()

这段代码,你复制过去就能跑。跑通了,恭喜你,你已经迈出了自动化测试的第一步。

为什么用 time.sleep(3)?因为页面加载需要时间。但实际项目中,我建议你用 WebDriverWait 做显式等待,更稳定。这个我们后面会细讲。

3.5 核心知识体系一览

为了让你更直观地理解本章的知识结构,我画了一张图:

Selenium WebDriver 核心知识体系 Selenium WebDriver 原理:HTTP协议通信 环境搭建:Python + Selenium库 驱动配置:ChromeDriver等 WebDriver协议 浏览器调试接口 pip install selenium 手动下载驱动 webdriver-manager 第一个脚本:打开百度 → 搜索 → 关闭浏览器

这张图把本章的核心内容串起来了。你从原理出发,理解它是怎么通信的;然后搭建环境,配置驱动;最后写第一个脚本。每一步都踩实了,后面学起来就顺了。

我的建议: 别急着往下学。先把第一个脚本跑通,然后试着改一改——比如换个网站,或者多做一个点击操作。动手才是最好的学习方式。

好了,这一章就到这儿。记住,自动化测试不是一蹴而就的事,但只要你把基础打牢了,后面会越来越顺。


公众号:蓝海资料掘金营,微信deep3321