窗口大小 / 位置 / 全屏控制等操作
演示浏览器窗口的 位置、尺寸、显示状态 全维度控制。Selenium 4 新增的 set_window_rect() 是面试高频考点。
5 个核心 API 对比:
maximize_window() → 拉满屏幕(含地址栏标签栏),不是全屏minimize_window() → 缩到任务栏,Chrome 才支持fullscreen_window() → F11 全屏,地址栏标签栏都隐藏set_window_size/position → Selenium 3 风格,两次调用会有 闪烁set_window_rect(x,y,w,h) → Selenium 4 原子操作,无闪烁,面试必考💡 演示亮点:支持 375×812 移动端模拟,一键切换窗口尺寸看响应式布局效果。
maximize_window / minimize_window / fullscreen_window / set_window_size / set_window_position / get_window_size / get_window_position
# 快速参考 driver.maximize_window() driver.set_window_size(800, 600) driver.set_window_position(100, 100) size = driver.get_window_size() assert abs(size["width"] - 800) <= 10
maximize_window() 后断言面板「窗口状态」为 MAX;minimize_window() 后恢复窗口;fullscreen_window() 断言状态为 FULset_window_size(800, 600) 后用 get_window_size() 断言宽度、高度(允许 ±10px 误差)set_window_position(100, 100) 后用 get_window_position() 断言 x、y 坐标(允许 ±10px 误差)
操作步骤:
① 使用 maximize_window() 将窗口最大化,然后断言面板中的「窗口状态」变为 MAX;再用 minimize_window() 最小化,恢复后再调 fullscreen_window() 进入全屏模式(状态应变为 FUL)。
② 使用 set_window_size(800, 600) 设置自定义尺寸,set_window_position(100, 100) 设置位置,再分别用 get_window_size() 和 get_window_position() 断言宽度、高度与 x、y 坐标是否匹配(允许 ±10px 误差)。
# 练习 4 参考答案 import time from selenium.webdriver.common.by import By # 1. 最大化窗口并断言面板状态 driver.maximize_window() time.sleep(1) status = driver.find_element(By.ID, "win_status").text assert status == "MAX", f"期望 MAX,实际 {status}" # 2. 最小化后恢复(演示用,Selenium 会最小化到任务栏) driver.minimize_window() time.sleep(1) # 恢复:使用 set_window_size 重新显示 driver.set_window_size(1000, 700) time.sleep(0.5) # 3. 全屏模式 driver.fullscreen_window() time.sleep(1) # 面板状态需要手动同步(演示页面的 simulateWindow 函数) driver.execute_script("simulateWindow('fullscreen')") status = driver.find_element(By.ID, "win_status").text assert status == "FUL", f"期望 FUL,实际 {status}" # 4. 自定义尺寸 + 位置 driver.set_window_size(800, 600) driver.set_window_position(100, 100) time.sleep(0.5) size = driver.get_window_size() pos = driver.get_window_position() print(f"size={size}, position={pos}") # 允许 ±10px 误差 assert abs(size["width"] - 800) <= 10 assert abs(size["height"] - 600) <= 10 assert abs(pos["x"] - 100) <= 10 assert abs(pos["y"] - 100) <= 10