浏览器配置 + 文件上传 + 截图

Selenium 进阶内容:浏览器配置 + 文件上传 + 截图

一、浏览器配置(EdgeOptions)

作用:自定义浏览器启动参数,常用场景:无头运行(无界面跑脚本,服务器执行)、禁止弹窗、忽略证书报错、禁用GPU、设置窗口大小等。

导入

python 复制代码
from selenium.webdriver.edge.options import Options

常用参数说明

参数 作用
--headless=new 无头模式:不弹出浏览器窗口,后台运行
--disable-gpu 禁用GPU渲染(部分windows环境无头必备)
--ignore-certificate-errors 忽略https证书报错
--start-maximized 启动直接最大化窗口
--disable-notifications 禁止网页弹窗通知

完整示例(无头模式)

python 复制代码
from selenium import webdriver
from selenium.webdriver.edge.service import Service
from selenium.webdriver.edge.options import Options

# 实例配置对象
edge_options = Options()
# 开启无头模式
edge_options.add_argument("--headless=new")
edge_options.add_argument("--disable-gpu")
edge_options.add_argument("--ignore-certificate-errors")

web_driver = webdriver.Edge(
    service=Service(r"D:\Software\edgedriver_win64\msedgedriver.exe"),
    options=edge_options
)
web_driver.get("https://www.baidu.com")
print(web_driver.title)
web_driver.quit()

⚠️ 重点:本地调试不要开无头;服务器部署自动化脚本使用无头

二、文件上传

场景区分

  1. input标签 type="file" ✅ Selenium原生支持(最常见)
    原理:定位上传输入框,直接 send_keys(文件绝对路径),不需要模拟点击弹窗选文件!
  2. 非input、自定义上传弹窗(Windows资源管理器弹窗)❌ selenium无法处理,需要第三方库如pyautogui

标准示例

python 复制代码
# 定位上传输入框
upload_ele = wait.until(EC.visibility_of_element_located((By.XPATH, '//input[@type="file"]')))
# 传入本地文件【绝对路径】
upload_ele.send_keys(r"D:\test.jpg")

三、截图操作

两种截图方式

  1. 截取整个浏览器页面 :driver.save_screenshot("图片保存路径.png")
  2. 截取单个元素 :element.screenshot("图片路径.png")
python 复制代码
# 页面截图
web_driver.save_screenshot(r"D:\page.png")

# 元素截图
search_input = wait.until(EC.visibility_of_element_located((By.ID, "kw")))
search_input.screenshot(r"D:\input.png")

注意:路径尽量使用原始字符串 r"";保存目录必须存在,否则报错


✅ 综合课堂练习

需求:

  1. 配置Edge,忽略证书报错,启动自动最大化
  2. 打开百度首页
  3. 页面截图保存到本地
  4. 在搜索框输入 自动化测试
  5. 点击搜索
  6. 关闭浏览器
相关推荐
锋行天下1 小时前
langgraph 后端发自定义数据,前端接收方法概括
人工智能·python
benchmark_cc3 小时前
用 QuantDash 读取单只股票五档盘口:抽样、缺失值检查与复现记录
python·数据分析·pandas·量化交易·股票数据·quantdash
曲径海盗3 小时前
【Python 学习第 55 天】列表基础
python·学习笔记·编程入门
专注仿真4 小时前
知识问答模型用到的算法集详解及代码实例
python·算法·代码·大模型训练·控制算法
jyOverQ4 小时前
我写了一个 CSDN Markdown 图片助手:告别本地图片逐张上传
python·工具·csdn
刘马想放假7 小时前
CANviz 使用指南|Linux 安装、DBC 解码、实时曲线与 J1939 实战
linux·python·websocket
2601_967987378 小时前
python判断变量名不要调用任何函数实现
python·函数·语法·判断·变量名
卷无止境9 小时前
SALib敏感性分析的python库学习笔记
后端·python
duansamve10 小时前
Python3+Flask+PostgreSQL18+Vue3项目生产环境用docker如何部署?
python·docker·flask
特立独行的猫A10 小时前
少 3 个环节、少 1 次 ABI、少 3500 行代码:cj-tauri 与 Ionic/Capacitor 的鸿蒙桥接机制对比
java·后端·python