浏览器操作练习 · 截图保存

整页截图、元素截图及Base64格式输出等操作

首页 浏览器操作导航

页面导读 · 截图保存

演示 Selenium 截图的 3 类 API + 1 个 Selenium 4 新功能,自动化测试排查失败现场的必备技能。本页可以实时模拟浏览器视口截图和元素级截图效果。

截图方式对比:

⚠️ 关键限制:Selenium 默认只能截 视口(屏幕可见区域)。要截整页需用 CDP:driver.execute_cdp_cmd("Page.captureScreenshot", {"captureBeyondViewport": True})

参数配置 打开关闭 页面导航 窗口控制 页面信息 元素交互 Cookie操作 截图保存 超时等待

练习 8 · 截图保存

📋 练习要求 · 截图
概念 整页截图保存到本地文件 + 元素级截图(Selenium 4.x)
Selenium API save_screenshot / get_screenshot_as_base64 / base64.b64decode / os.path.exists / WebElement.screenshot
练习要点
  • driver.save_screenshot("shot.png") 返回 True,用 os.path.exists() 验证文件生成
  • driver.get_screenshot_as_base64() 返回 base64 字符串,b64decode 后写入文件
  • 进阶:driver.find_element(By.ID, "xxx").screenshot("ele.png") 单独截取某个元素(Selenium 4.0+ 新增)
# 快速参考
import os, base64
ok = driver.save_screenshot("./shot.png")
assert ok and os.path.exists("./shot.png")
b64 = driver.get_screenshot_as_base64()
with open("./shot_b64.png", "wb") as f:
    f.write(base64.b64decode(b64))
# Selenium 4.0+ 进阶:元素级截图
driver.find_element(By.ID, "shot_target_card").screenshot("./shot_ele.png")
📋 本节练习清单
  • ✅ 练习目标 1:整页截图与文件验证 — save_screenshot("shot.png") 保存整张页面,断言返回值为 True,用 os.path.exists() 验证文件已生成,os.path.getsize() 断言大小 > 0,扩展名为 .png
  • ✅ 练习目标 2:Base64 截图保存 — 用 get_screenshot_as_base64() 获取 base64 编码,base64.b64decode() 解码后写入 .png 文件
  • ✅ 练习目标 3(进阶):元素级截图 — 定位 #shot_target_card 卡片后调用元素级 .screenshot("./shot_ele.png") 单独截取该元素(Selenium 4.0+ 新增 API)
8 练习目标:save_screenshot 整页截图与文件验证 + Base64 保存 + 元素级截图

操作步骤:
① 使用 driver.save_screenshot("shot.png") 保存整张页面截图,断言返回值为 True,用 os.path.exists() 验证文件存在,os.path.getsize() 断言大小 > 0,扩展名为 .png。
② 使用 driver.get_screenshot_as_base64() 获取 base64 编码字符串,用 base64.b64decode() 解码后以二进制写入 shot_b64.png,断言文件已生成且大小 > 0。
③ 进阶:定位页面上的某个元素(如下方的「截图目标卡片」#shot_target_card),使用 element.screenshot("ele.png") 单独截取该元素(Selenium 4.0+ 新增 API)。

🎯 截图目标卡片(Target Card) ID: card_2026_Q3
用户 ID
UID-778899
订单编号
ORD-20260822-001
练习关卡
Level-4 / 截图

截图预览区 — 使用 Selenium save_screenshot() 即可将整张页面保存为 PNG
真实代码示例:driver.save_screenshot("./shots/ex4.png")

查看参考答案(Python Selenium)
# 练习 8 参考答案
import os
from selenium.webdriver.common.by import By

# 确保已打开页面
if "浏览器操作练习" not in driver.title:
    driver.get("file:///f:/autotest_project/browser_op_practice.html")

# 1. save_screenshot 截图整张页面并验证文件
shot_path = "./shot.png"
ok = driver.save_screenshot(shot_path)
print(f"save_screenshot 返回值:{ok}")
assert ok is True
assert os.path.exists(shot_path), f"截图文件不存在: {shot_path}"
assert os.path.getsize(shot_path) > 0, "截图文件大小为 0"
assert shot_path.endswith(".png"), "截图文件扩展名应为 .png"
print(f"截图已保存且验证通过,文件大小:{os.path.getsize(shot_path)} bytes")

# 2. get_screenshot_as_base64 获取 base64 并保存为文件
import base64
b64_str = driver.get_screenshot_as_base64()
assert len(b64_str) > 0, "base64 字符串为空"
b64_path = "./shot_b64.png"
with open(b64_path, "wb") as f:
    f.write(base64.b64decode(b64_str))
assert os.path.exists(b64_path), f"base64 截图文件不存在: {b64_path}"
assert os.path.getsize(b64_path) > 0, "base64 截图文件大小为 0"
print(f"base64 截图已保存:{b64_path},大小:{os.path.getsize(b64_path)} bytes")

# 3. 进阶:Selenium 4.0+ 元素级截图
card = driver.find_element(By.ID, "shot_target_card")
card.screenshot("./shot_ele.png")
assert os.path.exists("./shot_ele.png") and os.path.getsize("./shot_ele.png") > 0
print("✅ 元素级截图成功:shot_ele.png")

print("✅ 练习 8 所有断言通过!")

关于我们

Python 自动化测试学习平台是一个面向软件测试工程师、开发人员及在校学生的交互式在线学习平台,专注于 Selenium WebDriver 与 Python unittest 自动化测试技能的教学与实践。

我们以"理论 + 实战 + 可交互演示"为核心特色,将八种常规元素定位和Javascript定位、元素操作、自动化测试工具、单元测试、测试模型等知识体系拆分为模块化课程,每个模块都配有可点击、可输入、可运行的模拟练习页面。

平台致力于降低自动化测试的入门门槛,让学习者从"看懂代码"到"动手实操",逐步掌握企业级自动化测试框架的设计与落地能力。

联系方式

📧邮箱:lq@selenium-auto-test.com

📞电话:0755-12345678

📍地址:深圳

💬微信公众号:Selenium自动化测试

🐙GitHub:github.com/selenium-auto-test

免责声明

1. 本平台所有示例代码、演示页面及教程内容均仅供学习交流使用,不构成任何商业推广或技术服务承诺。

2. 平台中的 Selenium API 描述、Python 语法说明均以官方文档为准,如有版本差异请以对应官方文档为准。

3. 学习者在实际项目中应用平台所学内容时,应结合自身项目环境进行充分测试,本平台不对因直接使用示例代码而产生的任何直接或间接损失承担责任。

4. 本平台所引用的第三方库(Selenium、ChromeDriver、unittest 等)版权归其各自作者及维护者所有。

5. 如涉及版权问题或内容建议,请及时通过联系方式与我们沟通,我们将第一时间处理。