窗口大小 / 位置 / 全屏控制等操作
maximize/minimize/fullscreen/set_window_size/set_window_rect 完整控制
maximize_window() · minimize_window() · fullscreen_window() · set_window_size() · set_window_position() · set_window_rect() · get_window_rect()maximize_window 最大化 · minimize_window 最小化 · set_window_size / set_window_position / set_window_rect 精确控制。
set_window_size(w,h) + set_window_position(x,y) 是两个独立动作,可能被浏览器事件循环插队 → 窗口先闪到新尺寸,再跳到新位置set_window_rect(x,y,w,h) 是原子操作,驱动一次性更新 x/y/w/h,位置和尺寸同时生效 ✅"""
窗口控制完整示例
- maximize/minimize 直接调 driver 方法
- size/position/rect 需要 Options 或 driver 方法
"""
from selenium import webdriver
driver = webdriver.Chrome()
# ===== 方式 1:快捷方法 =====
driver.maximize_window() # 一键最大化到屏幕
driver.minimize_window() # 最小化到任务栏(Selenium 4)
driver.fullscreen_window() # 全屏(F11 效果,Chrome 支持)
# ===== 方式 2:精确控制 =====
driver.set_window_size(1200, 800) # 宽 × 高
driver.set_window_position(100, 100) # 左上角 x, y
# ⚠️ 上面两次调用 → 可能有闪烁(独立动作)
# ===== 方式 3:set_window_rect(推荐 Selenium 4 用法)=====
driver.set_window_rect(x=900, y=300, width=600, height=500)
# 原子操作!位置和尺寸同时生效,无闪烁
# ===== 读取当前窗口信息 =====
size = driver.get_window_size() # {'width': 1920, 'height': 1080}
pos = driver.get_window_position() # {'x': 0, 'y': 0}
rect = driver.get_window_rect() # {'x': 0, 'y': 0, 'width': 1920, 'height': 1080}
# 💡 Selenium 4 推荐统一用 get_window_rect(),包含所有字段
# ===== 居中窗口实战 =====
screen_w = driver.execute_script("return window.screen.width")
screen_h = driver.execute_script("return window.screen.height")
win_w, win_h = 1200, 800
x = (screen_w - win_w) // 2
y = (screen_h - win_h) // 2
driver.set_window_rect(x, y, win_w, win_h)
driver.quit()
maximize_window() → 读取当前窗口尺寸 → set_window_size(800,600) → 验证尺寸是否真变了(误差不超过 ±5 px)driver.execute_script("return screen.width + ',' + screen.height")),再用 set_window_rect 把窗口挪到屏幕正中央size + position 两次调用 和 set_window_rect 一次调用 —— 观察肉眼是否有闪烁差异fullscreen_window() 和 maximize_window() 看起来都把窗口拉满屏幕,但实际像素不一样!写脚本:先 maximize → 读 rect → fullscreen → 再读 rect,对比两次的 width / height 差值。哪个更大?fullscreen 会把地址栏、标签栏也藏起来(类似 F11),验证一下set_window_rect(**saved_rect) 把第 ② 步存的值恢复回去。最后 assert 一下恢复后的 rect 和第 ② 步几乎完全一致set_window_rect 是 Selenium 4 主推的原子方法,面试经常问它为什么比 size + position 分开调更好。driver.get_window_rect() 返回的 dict 可直接 **dict 解包当参数传回去什么是 **dict 解包?**dict 会把 dict 的 key-value 展开成关键字参数。{'x':100,'y':50,'width':1280,'height':720}set_window_rect(x=100, y=50, width=1280, height=720)set_window_rect(**saved)set_window_rect(x=100, y=50, width=1280, height=720)saved = driver.get_window_rect()
driver.maximize_window()
driver.set_window_rect(
x=saved['x'], y=saved['y'],
width=saved['width'], height=saved['height']
)✅ 方式 B:** 解包(一行搞定)saved = driver.get_window_rect() driver.maximize_window() driver.set_window_rect(**saved) # 一行!不会漏 key💡 特别适合:finally 里恢复窗口——读了个 dict,写的时候直接扔回去。,非常适合写"记住窗口位置再恢复"的场景