浏览器操作是Selenium自动化的起点,涵盖「启动配置、网页访问、窗口调整、关闭清理」四大核心,是所有后续操作的基础。需重点掌握「不自动关闭浏览器」「窗口最大化」等避坑配置。
1. 安装依赖→确认浏览器版本;
前一篇文章中已完成
2.导入库→配置浏览器选项;
导入 Selenium 中控制浏览器的核心模块,相当于「告诉 Python:我要开始操作浏览器了」
# 导入Selenium中控制Edge浏览器的模块
from selenium import webdriver
# (可选)导入驱动管理库,用于自动匹配Edge驱动版本
from selenium.webdriver.edge.service import Service
from webdriver_manager.microsoft import EdgeChromiumDriverManager
# (可选)导入时间库,用于临时暂停脚本(比如观察效果)
import time
webdriver是 Selenium 的核心模块,不同浏览器对应不同的子模块(Edge 用webdriver.Edge(),Chrome 用webdriver.Chrome());
3.配置浏览器选项
提前设置浏览器的运行规则(比如不自动关闭、最大化窗口),避免后续操作触发「元素被遮挡」「浏览器闪退」等问题。
# 第一步:初始化Chrome的选项对象(创建「配置模板」)
chrome_options = webdriver.ChromeOptions()
# 第二步:核心配置------浏览器不自动关闭(新手必加!)
# 原理:让Chrome进程与Python脚本分离,脚本结束后浏览器仍保留
chrome_options.add_experimental_option("detach", True)
# 第三步:可选配置------禁用自动化提示条
# 效果:去掉Chrome上方「Chrome正受到自动测试软件控制」的黄色提示条
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
# 第四步:可选配置------禁用无关日志(让控制台更干净)
# 效果:只输出严重错误,忽略警告/信息类日志,避免刷屏
chrome_options.add_argument("--log-level=3")
# 第五步:可选配置------启动即最大化窗口(提前规避元素遮挡)
# 也可后续用driver.maximize_window(),二选一即可
chrome_options.add_argument("--start-maximized")
- 每个
add_experimental_option()/add_argument()都是单独的配置,可根据需求增删; - 配置需在「启动浏览器」前完成,启动后再配置无效。
4.启动浏览器
方式A:基础启动(需手动配置驱动)
直接启动 Chrome,适合已手动将 Chrome 驱动添加到系统环境变量的场景。
# 将步骤3的配置传入,启动Chrome
driver = webdriver.Chrome(options=chrome_options)
执行后会弹出 Chrome 空白窗口,无报错则启动成功;若提示「找不到 chromedriver」,说明驱动未配置环境变量,需改用方式 B。
方式 B:自动匹配驱动启动
通过webdriver-manager自动下载、匹配对应版本的 Chrome 驱动,彻底解决「驱动版本不匹配」「找不到驱动」问题。
# 自动下载匹配Chrome版本的驱动,并启动浏览器
driver = webdriver.Chrome(
service=Service(ChromeDriverManager().install()), # 自动安装/匹配驱动
options=chrome_options # 传入步骤3的配置
)
- 首次运行会下载驱动(耗时几秒,控制台会显示下载进度);
- 下载完成后弹出 Chrome 空白窗口,无报错则成功;
- 后续运行会复用已下载的驱动,无需重复下载。
5.访问网页
from selenium import webdriver
# 初始化Chrome浏览器
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
URL 格式必须规范:不能只写www.baidu.com,必须带https://(推荐)或http://,否则触发「invalid argument」错误;
driver.get()执行后,会等待页面「初步加载完成」(但动态元素可能还在加载,后续操作需配合等待)。
6.获取页面基础信息
确认浏览器是否成功打开目标网页,避免【访问错地址】
from selenium import webdriver
# 初始化Chrome浏览器
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
# 获取页面标题(百度的标题是「百度一下,你就知道」)
page_title = driver.title
print(f"✅ 当前页面标题:{page_title}") # 预期输出:百度一下,你就知道
# 获取当前页面的URL(验证是否是目标地址)
current_url = driver.current_url
print(f"✅ 当前页面URL:{current_url}") # 预期输出:https://www.baidu.com/
7.Chrome 窗口控制
调整窗口的大小、位置,或执行刷新 / 后退 / 前进,适配不同操作场景(比如窗口太小导致元素被遮挡)。
7.1 最大化窗口
# 将浏览器窗口最大化(覆盖整个屏幕)
driver.maximize_window()
print("🔍 窗口已最大化")
- 关键作用:避免因窗口过小导致搜索框 / 按钮被侧边栏遮挡,后续操作触发「元素不可交互」错误。
7.2 调整窗口位置
(移动到屏幕指定坐标)
# 设置窗口左上角的坐标(x=1100,y=20),单位:像素
# x:距离屏幕左侧的距离,y:距离屏幕顶部的距离
driver.set_window_position(1100, 20)
print("📍 窗口已移动到指定位置")
7.3 调整窗口大小(设置宽高)
# 设置窗口宽度900px,高度900px
driver.set_window_size(900, 900)
print("📏 窗口大小已调整为900x900")
- 若先执行了
maximize_window(),再执行set_window_size()会覆盖最大化效果,窗口变为指定大小。
7.4 刷新页面(模拟 F5 按键)
# 刷新当前打开的百度页面
driver.refresh()
print("🔄 百度页面已刷新")
7.5 后退 / 前进(模拟浏览器的后退 / 前进按钮)
# 先访问一个新页面(比如CSDN),才能演示后退/前进
driver.get("https://www.csdn.net/")
print(f"📌 跳转到新页面:{driver.title}")
# 后退到上一个页面(百度)
driver.back()
print(f"🔙 后退到百度:{driver.title}")
# 前进到后退前的页面(CSDN)
driver.forward()
print(f"➡️ 前进到CSDN:{driver.title}")
- 若浏览器只有一个页面,
back()/forward()操作无效(不会报错,但无视觉变化)。
8.关闭浏览器
脚本执行完毕后,清理chrome进程,避免残留后台进程占用系统资源
8.1关闭当前标签页
# 先打开一个新标签页(演示效果)
driver.execute_script("window.open('https://www.qq.com/')") # 打开腾讯网新标签
# 关闭当前标签页(此时关闭的是CSDN标签,腾讯网标签仍保留)
driver.close()
print("❌ 当前标签页已关闭,浏览器仍保留")
8.2关闭整个浏览器
# 关闭所有标签页,终止Chrome进程(彻底清理)
driver.quit()
print("❌ 浏览器已完全关闭,所有进程已清理")
注意事项
- 若步骤 3 配置了
detach=True,执行quit()仍会强制关闭浏览器; - 脚本结束前建议执行
driver.quit(),否则多次运行后会残留多个 Chrome 后台进程(可在任务管理器中看到); close()仅关当前标签,quit()关整个浏览器,根据需求选择。