零基础学selenium教程:爬虫与自动化测试双场景实战指南

admin 综合编程开发技术 4


是不是想爬取网页数据却被动态加载内容拦住?F12 看到的代码和爬虫爬下来的不一样,静态爬虫根本拿不到数据;又或者想做自动化测试,却不知道怎么让脚本自动点击按钮、填写表单?零基础学 Selenium,最愁的就是 “场景不会分”“工具不会用”“脚本跑不起来”。其实 Selenium 不止能做自动化测试,用来爬取动态网页也超好用!今天兔子哥就带大家从零基础入门,搞定爬虫和自动化测试两个场景,附详细步骤和代码示例,跟着学,你也能玩转 Selenium!

基础问题:Selenium 到底是啥?为啥能兼顾爬虫和测试?


可能有朋友会问:“Selenium 听着像测试工具,怎么还能爬数据?零基础学它真能学会吗?”Selenium 本质是个 “网页自动化工具”,能模拟人操作浏览器 —— 自动打开网页、点击按钮、下拉滚动条,还能获取网页渲染后的内容。正因为它能处理动态加载的内容,所以既适合解决爬虫爬不到动态数据的问题,又能做自动化测试验证网页功能。
为啥适合零基础?它用 Python 写脚本,语法简单,比其他爬虫或测试工具容易上手。爬虫场景中,它能搞定 JavaScript 动态生成的内容;测试场景中,它能代替手工重复操作。网友 “数据小白” 说:“之前用静态爬虫爬不到商品价格,学了 Selenium 后,脚本自动下拉加载,轻松拿到所有数据,现在还能用它测公司网站的登录功能,一举两得!” 所以别担心用途多,两个场景的基础操作相通,学会一个场景,另一个场景很容易上手。


环境搭建:3 步搞定,爬虫和测试通用配置


不管是爬虫还是测试,环境搭建都一样,这三步错一步,后面全白搭,新手跟着做:

步骤 1:装 Python(脚本的 “发动机”)


Selenium 脚本用 Python 写,必须先装 Python:
  • 去 Python 官网(python.org)下最新版,选 “Windows Installer (64-bit)”;
  • 安装时一定要勾 “Add Python to PATH”(自动配环境变量,新手最容易漏!);
  • 点 “Install Now” 一路下一步,装完打开 cmd,输 “python --version”,能看到 “Python 3.x.x” 就成了。

步骤 2:装 Selenium 库(核心工具包)


打开 cmd,输一行命令就能装:
plaintext
pip install selenium

回车等几分钟,出现 “Successfully installed selenium” 就成功了。如果提示 “pip 不是内部命令”,就是步骤 1 没勾 PATH,卸载重装时记得勾上。

步骤 3:下浏览器驱动(连接浏览器的 “钥匙”)


Selenium 需要驱动才能控制浏览器,以常用的 Chrome 为例:
  • 查 Chrome 版本:打开 Chrome→右上角三个点→设置→关于 Chrome,记版本号(比如 128.0.6613);
  • 去 Chrome 驱动官网(chromedriver.chromium.org)下对应版本驱动,选 Windows 系统;
  • 解压后把驱动文件(chromedriver.exe)放 Python 安装目录(右键 Python 图标→“打开文件位置”,直接粘进去)。

浏览器驱动名称新手踩坑点解决办法
ChromeChromeDriver版本和 Chrome 不匹配严格按 Chrome 版本下驱动,差一个号都报错
FirefoxGeckoDriver驱动放错位置放 Python 目录或添加到系统 PATH
EdgeEdgeDriver下成旧版 Edge 驱动确认是 Chromium 内核的 Edge 驱动

兔子哥提示:驱动版本必须和浏览器版本对应!比如 Chrome 是 128 版,驱动就得下 128 开头的,别图省事用旧驱动,不然肯定跑不起来。


场景一:爬虫实战 —— 爬取动态加载的商品列表


很多网页数据是滚动后才加载的(比如电商商品列表),静态爬虫爬不到,用 Selenium 就能轻松搞定,步骤超详细:

步骤 1:分析目标网页


以某电商商品列表为例,目标是爬取 “商品名称” 和 “价格”,这些数据需要滚动页面才会加载更多。

步骤 2:写爬虫脚本(带注释)


新建 “goods_crawler.py”,代码如下:
python
from selenium import webdriverfrom selenium.webdriver.common.by import Byimport time# 启动Chrome浏览器driver = webdriver.Chrome()# 打开目标网页(换成实际商品列表页)driver.get("https://www.example.com/goods")driver.maximize_window()  # 最大化窗口# 滚动页面加载更多数据(滚动3次,每次等2秒)for i in range(3):# 滚动到页面底部driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")time.sleep(2)  # 等数据加载# 定位商品列表(用CLASS_NAME定位,根据实际网页调整)goods_list = driver.find_elements(By.CLASS_NAME, "goods-item")# 提取商品信息for goods in goods_list:# 定位商品名称(根据实际网页的元素属性调整)name = goods.find_element(By.CLASS_NAME, "goods-name").text# 定位商品价格price = goods.find_element(By.CLASS_NAME, "goods-price").textprint(f"商品:{name},价格:{price}")# 关闭浏览器driver.quit()

步骤 3:运行脚本看效果


双击脚本,会自动打开 Chrome,滚动页面加载商品,控制台会打印爬取的商品名称和价格。避坑点
  • 元素定位的 CLASS_NAME 要和网页实际一致,用 F12 检查元素属性;
  • 滚动后一定要加等待时间(time.sleep),不然数据没加载完就提取,会拿到空值;
  • 别爬取敏感数据,遵守网站 robots 协议。



场景二:自动化测试实战 —— 验证登录功能


用 Selenium 做自动化测试,能代替手工重复验证登录、注册等功能,步骤清晰:

步骤 1:分析测试场景


目标是测试某网站登录功能:输入账号密码→点击登录→验证是否登录成功(显示欢迎信息)。

步骤 2:写测试脚本(带注释)


新建 “login_test.py”,代码如下:
python
from selenium import webdriverfrom selenium.webdriver.common.by import Byimport time# 启动浏览器driver = webdriver.Chrome()driver.get("https://www.example.com/login")  # 换成实际登录页driver.maximize_window()time.sleep(2)# 输入账号(根据实际网页的元素ID调整)username_input = driver.find_element(By.ID, "username")username_input.send_keys("test_user")  # 测试账号# 输入密码password_input = driver.find_element(By.ID, "password")password_input.send_keys("test_pass123")  # 测试密码# 点击登录按钮login_btn = driver.find_element(By.ID, "login-btn")login_btn.click()time.sleep(3)  # 等登录完成# 验证登录成功(检查是否显示欢迎信息)try:welcome_text = driver.find_element(By.CLASS_NAME, "welcome").textprint(f"登录测试通过!欢迎信息:{welcome_text}")except:print("登录测试失败!未找到欢迎信息")# 关闭浏览器driver.quit()

步骤 3:运行脚本看效果


双击脚本,浏览器会自动输入账号密码、点击登录,控制台会打印测试结果。避坑点
  • 输入框和按钮的 ID 要和网页一致,用 F12 检查准确;
  • 登录后加足够等待时间,避免页面没加载完就验证;
  • 用 try-except 捕获错误,让脚本更稳定,不会因为验证失败直接崩溃。



两个场景的核心区别:一张表讲清楚


场景核心目标关键点常用操作
爬虫获取动态数据滚动加载、数据提取scrollTo、find_elements、text 提取
自动化测试验证功能正确性元素交互、结果验证send_keys、click、assert 断言

兔子哥提示:虽然操作有差异,但基础的元素定位(ID、CLASS_NAME)、浏览器控制(get、quit)是通用的,学会一个场景的基础,另一个场景很容易迁移。


常见错误解决:双场景都可能踩的 5 个坑


错误 1:元素定位失败,提示 “no such element”


现象:脚本说找不到元素,但网页明明有。
原因
  • 页面没加载完就定位(最常见);
  • 元素在 iframe 框架里,直接定位不到。
    解决方法
  • 加等待时间:time.sleep(5)(简单)或显式等待(推荐);
  • 切换 iframe:driver.switch_to.frame("iframe_id")

错误 2:爬虫爬不到数据,显示空值


现象:控制台打印的商品名称或价格是空的。
原因:滚动后数据没加载完就提取,或定位的元素不对。
解决方法:延长滚动后的等待时间;用 F12 重新检查元素属性,确保定位准确。

错误 3:测试时点击没反应,提示 “element not interactable”


现象:能找到按钮,但点击没反应,报错 “元素不可交互”。
原因:按钮被弹窗、广告遮挡,或不在可见区域。
解决方法:先滚动到按钮位置:driver.execute_script("arguments[0].scrollIntoView();", btn),再点击。

错误 4:浏览器启动后秒关,看不到过程


现象:脚本运行快,浏览器一闪就关了。
原因:脚本最后有driver.quit(),运行完就关闭。
解决方法:测试或调试时,注释掉driver.quit(),手动关闭浏览器;爬虫脚本可以保留,自动完成后关闭。

错误 5:驱动版本不匹配,启动失败


现象:浏览器启动报错,说 “driver version incompatible”。
原因:驱动版本和浏览器版本对不上。
解决方法:按步骤 3 重新查浏览器版本,下载对应驱动,替换旧驱动。


自问自答:零基础学 Selenium 常见疑问


爬虫和自动化测试,哪个场景更适合入门?


建议先从自动化测试入手!测试场景的元素定位更固定(比如登录页的输入框通常有明确 ID),交互逻辑简单(输入、点击),容易看到效果,成就感强。学会测试场景后,再学爬虫的滚动加载、数据提取会更顺。

需要学多少 Python 基础才能学 Selenium?


不用太多!会基本的变量、函数、循环就行。Selenium 脚本里的代码大多是 “调用函数”,比如driver.get()element.click(),不用写复杂的算法,边用边补 Python 基础完全来得及。

除了 Chrome,其他浏览器能用来做这两个场景吗?


当然能!Firefox、Edge 都可以,步骤类似:下对应浏览器的驱动,脚本里把webdriver.Chrome()换成webdriver.Firefox()webdriver.Edge()就行,新手先练 Chrome,资料最多。


最后说点实在话


零基础学 Selenium,刚开始觉得难很正常,环境搭不对、元素定位错、脚本跑失败都是必经之路。我刚开始学的时候,驱动版本不对折腾了一下午,爬虫时滚动次数不够爬不全数据,测试时按钮 ID 写错卡了好久。但当看到脚本自动爬下数据、测试通过打印结果时,那种成就感真的不一样。
别想着一口吃成胖子,先把环境搭稳,再练元素定位,然后分场景练爬虫和测试的核心操作。遇到错误别慌,把报错信息复制到百度搜,大部分问题前辈们都遇到过。Selenium 是个 “越用越顺手” 的工具,练得多了,你会发现不管是爬数据还是做测试,效率都能提高一大截。
现在就打开电脑,按步骤搭环境,先写个简单的登录测试脚本,再试试爬取商品列表,动手练才是最快的入门方法,你会发现 Selenium 真的没那么难!

标签: selenium

发布评论 0条评论)

  • Refresh code

还木有评论哦,快来抢沙发吧~