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,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为例:
- 查看你的Chrome版本:点击右上角三个点 → 帮助 → 关于Google Chrome
- 去 ChromeDriver官网 下载对应版本的驱动
- 把下载的
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 -*-。
我的建议:刚开始学的时候,别急着写复杂的脚本。先把环境搭好,跑通这个最简单的例子。跑通了,信心就有了。后面的事情,水到渠成。
好了,这一章的内容就到这里。记住:自动化测试的核心不是写代码,而是理解浏览器和代码之间的交互逻辑。把这个搞明白了,后面学什么框架都轻松。