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()
⚠️ 重点:本地调试不要开无头;服务器部署自动化脚本使用无头
二、文件上传
场景区分
- input标签 type="file" ✅ Selenium原生支持(最常见)
原理:定位上传输入框,直接send_keys(文件绝对路径),不需要模拟点击弹窗选文件! - 非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")
三、截图操作
两种截图方式
- 截取整个浏览器页面 :
driver.save_screenshot("图片保存路径.png") - 截取单个元素 :
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"";保存目录必须存在,否则报错
✅ 综合课堂练习
需求:
- 配置Edge,忽略证书报错,启动自动最大化
- 打开百度首页
- 页面截图保存到本地
- 在搜索框输入
自动化测试 - 点击搜索
- 关闭浏览器