3. Selenium入门:Selenium简介、WebDriver原理、环境搭建、第一个自动化脚本

3.1 Selenium到底是什么?

先说说Selenium。它不是一个工具,而是一套工具集。说白了,就是帮你用代码去操控浏览器的“遥控器”。

我刚开始接触自动化测试时,最头疼的就是怎么让代码去点页面上的按钮。后来发现Selenium就是干这个的——它模拟真实用户的操作,比如点击、输入、滚动页面。

Selenium的核心组件有三个:

  • Selenium WebDriver:最核心的部分,直接操控浏览器
  • Selenium IDE:一个浏览器插件,可以录制回放操作(我个人很少用,因为不够灵活)
  • Selenium Grid:分布式执行,可以在多台机器上并行跑测试

嗯,这里要注意:我们平时说的“Selenium”,90%的情况下指的就是WebDriver。

一句话总结:Selenium WebDriver 是一个用于自动化浏览器操作的工具库。它支持多种编程语言(Java、Python、C#等),也支持主流浏览器(Chrome、Firefox、Edge等)。

3.2 WebDriver的工作原理

你可能会问:代码是怎么控制浏览器的?

WebDriver的工作原理其实不复杂。它通过浏览器原生的自动化接口来操控浏览器。每个浏览器厂商都提供了自己的驱动,比如Chrome有ChromeDriver,Firefox有GeckoDriver。

我画了一张图,帮你理解这个流程:

你的测试脚本 WebDriver API 浏览器驱动 浏览器 发送指令 转发指令 执行操作 流程:脚本 → WebDriver API → 浏览器驱动 → 浏览器

流程其实很简单:你的脚本调用WebDriver API,API把指令发给浏览器驱动,驱动再告诉浏览器去执行。反过来,浏览器执行完操作后,结果也沿着这条路返回。

避坑指南:我曾经遇到过一个问题——明明代码写对了,但浏览器就是打不开。后来发现是ChromeDriver版本和Chrome版本不匹配。记住:驱动版本必须和浏览器版本对应,差一个版本都可能报错。

3.3 环境搭建

搭建环境其实就三步。我习惯用Python,因为写起来快,调试也方便。

第一步:安装Python

去官网下载Python 3.7以上版本。安装时记得勾选“Add Python to PATH”。

第二步:安装Selenium库

打开命令行,执行:

pip install selenium

如果你用的是国内网络,可以加个镜像源:

pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple

第三步:下载浏览器驱动

以Chrome为例:

  1. 查看你的Chrome版本:点击右上角三个点 → 帮助 → 关于Google Chrome
  2. 去 ChromeDriver官网 下载对应版本的驱动
  3. 把下载的 chromedriver.exe 放到Python安装目录的Scripts文件夹下

其他浏览器的驱动:

浏览器 驱动名称 下载地址
Chrome ChromeDriver chromedriver.chromium.org
Firefox GeckoDriver github.com/mozilla/geckodriver
Edge EdgeDriver developer.microsoft.com/en-us/microsoft-edge/tools/webdriver

注意:驱动文件要放在环境变量PATH包含的目录下,否则代码里要指定驱动路径。我个人习惯直接放Scripts文件夹,省事。

3.4 第一个自动化脚本

环境搭好了,我们来写第一个脚本。目标很简单:打开百度,搜索“Selenium”,然后关闭浏览器。

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

# 创建浏览器对象
driver = webdriver.Chrome()

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

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

# 找到搜索按钮,点击
search_button = driver.find_element(By.ID, "su")
search_button.click()

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

# 关闭浏览器
driver.quit()

这段代码做了几件事:

  • webdriver.Chrome():启动Chrome浏览器
  • driver.get():导航到指定网址
  • find_element():定位页面元素,这里用的是ID定位
  • send_keys():模拟键盘输入
  • click():模拟鼠标点击
  • driver.quit():关闭浏览器并释放资源

运行结果:你会看到一个Chrome窗口自动打开,输入“Selenium”,点击搜索,然后3秒后自动关闭。

我第一次跑通这个脚本时,还挺激动的。看着浏览器自己动起来,感觉就像有了生命一样。

3.5 常见问题与避坑

这里总结几个我踩过的坑:

  • 驱动版本不匹配:报错信息通常是“session not created”。解决办法就是去下载对应版本的驱动。
  • 元素找不到:可能是页面还没加载完。可以用time.sleep()或者WebDriverWait等待元素出现。
  • 浏览器一闪而过:代码执行太快,你还没看清就结束了。加个time.sleep()就能看到过程。
  • 中文乱码:确保Python文件保存为UTF-8编码,文件开头加# -*- coding: utf-8 -*-。

我的建议:刚开始学的时候,别急着写复杂的脚本。先把环境搭好,跑通这个最简单的例子。跑通了,信心就有了。后面的事情,水到渠成。

好了,这一章的内容就到这里。记住:自动化测试的核心不是写代码,而是理解浏览器和代码之间的交互逻辑。把这个搞明白了,后面学什么框架都轻松。

可可精品资料库