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

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. 关闭浏览器
相关推荐
魔猴疯猿3 小时前
从0到1用Python开发第一个智能体
人工智能·python·深度学习·神经网络·机器学习
xiaoqi01954 小时前
机器学习因子分析实战:从量化特征到可视化决策
人工智能·python·机器学习
Escalating_xu4 小时前
【Python】基础语法(1):常量、变量、类型、输入输出与运算符
开发语言·python
happylifetree4 小时前
Python14:核心语法-数据存储与运算-字符串定义
python
hhb_6185 小时前
AIRAGDebug:一键定位RAG链路异常
人工智能·python·算法
小静AI工程实验室5 小时前
asyncio.Queue 有界队列实战:背压、task_done、join 与异常收尾
python
小凡geo5 小时前
本地商家 GEO:用脚本一键生成 FAQPage 结构化数据,让 AI 切片更稳
开发语言·人工智能·python·microsoft·搜索引擎·ai
Zhou1411365 小时前
SpringBoot_03_Web开发
前端·spring boot·python
weixin199701080165 小时前
《1688物流API接口边界:logistics.trace.get 与 freight.template.list 的隐藏约束》(附Python源码)
windows·python·list
mhmh1236 小时前
Python 对象模型与数据模型:魔术方法、描述符与元类深度解析
开发语言·python