Python Selenium 浏览器窗口控制、等待机制及 Chrome 启动参数详解

山海之间
山海之间
发布时间:2026-10-13 | 6人浏览过
原创

本文详细解析 Python Selenium 的浏览器窗口大小与位置控制方法,对比显式等待与隐式等待的执行逻辑。重点列举 Chrome 浏览器的高级启动参数,包括无头模式、代理、缓存路径、禁用插件及模拟移动设备等配置技巧,帮助开发者优化自动化测试脚本性能与兼容性。

本文深入解析 Python Selenium 的参数配置技巧,通过具体代码示例展示如何优化浏览器行为,为相关开发与测试工作提供实用参考。

浏览器窗口大小与位置控制

Selenium 提供了获取浏览器尺寸、设定窗口坐标以及最大化窗口的基础功能。

使用 get_window_size() 方法可以获取当前浏览器窗口的宽度和高度信息。


# 将窗口大小实例化
size_Dict = driver.get_window_size()
# 打印浏览器的宽和高
print("当前浏览器的宽:", size_Dict['width'])
print("当前浏览器的高:", size_Dict['height'])

通过 set_window_size() 方法,开发者可以动态调整浏览器窗口的宽度和高度。


driver.set_window_size(width=500, height=500, windowHandle="current")

get_window_position() 用于获取浏览器窗口在屏幕上的具体坐标位置。


# 将窗口位置实例化
position = driver.get_window_position()
# 打印窗口坐标
print(position)
print("浏览器所在位置的横坐标:", position["x"])
print("浏览器所在位置的纵坐标:", position["y"])

利用 set_window_position() 方法,可以精确设定浏览器窗口在屏幕上的起始坐标。


# 设置窗口位置并打印位置坐标
driver.set_window_position(x=100, y=200)
print(driver.get_window_position())

调用 maximize_window() 方法可将浏览器窗口最大化,以全屏模式运行。


# 最大化浏览器并输出浏览器的大小和位置坐标
driver.maximize_window()
print(driver.get_window_size())
print(driver.get_window_position())

Selenium 等待机制:显式与隐式

在 Selenium 自动化测试中,合理选择“显式等待”与“隐式等待”对脚本稳定性至关重要。

显式等待是推荐使用的等待方式,它允许开发者针对特定条件设置等待逻辑。

显式等待代码中定义了具体的等待条件,只有当该条件满足时,脚本才会继续执行后续操作。例如,以下代码设置最大等待时间为 10 秒,若超时仍未满足条件,则抛出 TimeoutException 异常。


from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()driver.get("http://somedomain/url_that_delays_loading")
try:  
  element = WebDriverWait(driver, 10).until(     
    EC.presence_of_element_located((By.ID, "myDynamicElement")))
finally:
  # 等待后执行的代码
  # driver.quit()

隐式等待是一种全局性的等待策略,适用于整个 WebDriver 实例的生命周期。

当使用隐式等待时,如果元素未立即找到,WebDriver 会等待固定的时间长度。默认等待时间为 0 秒。一旦设置了隐式等待,该设置将作用于当前 WebDriver 对象的所有元素查找操作,直到实例销毁。


from selenium import webdriver

driver = webdriver.Firefox()
driver.implicitly_wait(10) # seconds
driver.get("http://somedomain/url_that_delays_loading")
myDynamicElement = driver.find_element_by_id("myDynamicElement")

Chrome 启动参数配置详解

Selenium 结合 Chrome 浏览器时,可通过 Options 对象配置丰富的启动参数以控制浏览器行为。


from selenium import webdriver
from selenium.webdriver.chrome.options import Options

# 实例化一个启动参数对象
chrome_options = Options()
# 无界面运行(无窗口)
chrome_options.add_argument('--headless')
# 启动浏览器
driver = webdriver.Chrome(chrome_options=chrome_options)
# 请求百度首页
driver.get('http://www.baidu.com')

其中,--headless 是一个常用的启动参数,用于在无图形界面环境下运行浏览器。

以下是 Chrome 浏览器常用的启动参数列表及其功能说明:

  • --user-data-dir="[PATH]" 用于指定用户数据文件夹路径,可将书签等用户数据保存在非系统分区,便于数据持久化或隔离。
  • --disk-cache-dir="[PATH]" 用于指定磁盘缓存的存储路径。
  • --disk-cache-size= 用于指定磁盘缓存的最大大小,单位字节(Byte)。
  • --first run 参数用于将浏览器重置为初始状态,模拟首次运行场景。
  • --incognito 参数用于以隐身模式启动浏览器,不保存浏览历史。
  • --disable-javascript 参数用于禁用 JavaScript 执行,可用于测试无 JS 环境或提升加载速度。
  • --omnibox-popup-count="num" 用于修改地址栏下拉提示菜单显示的数量,示例中设置为 15 个。
  • --user-agent="xxxxxxxx" 用于修改 HTTP 请求头中的 User-Agent 字符串,可通过访问 about:version 页面验证修改效果。
  • --disable-plugins 参数用于禁止加载所有浏览器插件,有助于提升页面加载速度,可通过 about:plugins 页面查看状态。
  • --disable-javascript 参数再次强调,用于禁用 JavaScript,若感觉页面加载缓慢,可尝试添加此参数。
  • --disable-java 参数用于禁用 Java 功能。
  • --start-maximized 参数用于启动浏览器时自动最大化窗口。
  • --no-sandbox 参数用于取消 Chrome 的沙盒模式,通常在 Linux 服务器环境下运行时需要。
  • --single-process 参数用于以单进程模式运行 Chrome,简化进程管理但可能影响稳定性。
  • --process-per-tab 参数为每个标签页分配独立的进程,提高隔离性。
  • --process-per-site 参数为每个站点分配独立的进程,增强安全性。
  • --in-process-plugins 参数使插件不启用独立进程,与主进程共享资源。
  • --disable-popup-blocking 参数用于禁用浏览器的弹出窗口拦截功能。
  • --disable-plugins 参数用于禁用所有插件加载,可提升性能。
  • --disable-images 参数用于禁止加载网页图片,适用于仅需抓取文本信息的场景。
  • --enable-udd-profiles 参数用于启用用户配置文件切换菜单。
  • --proxy-pac-url 参数用于指定 PAC(代理自动配置)文件的 URL,格式为 [via 1/2]。
  • --lang=zh-CN 参数用于将浏览器界面语言设置为简体中文。
  • --disk-cache-dir 参数用于自定义缓存目录路径。
  • --disk-cache-size 参数用于自定义磁盘缓存的最大值,单位为字节(byte)。
  • --media-cache-size 参数用于自定义多媒体缓存的最大值,单位为字节(byte)。
  • --bookmark-menu 参数用于在工具栏添加书签按钮。
  • --enable-sync 参数用于启用书签同步功能。
  • --single-process 参数用于以单进程模式运行 Google Chrome。
  • --start-maximized 参数用于启动 Google Chrome 时自动最大化窗口。
  • --disable-java 参数用于禁止 Java 功能运行。

移动设备模拟与图片加载控制

Selenium 结合 Chrome 时,可通过修改 User-Agent 参数来模拟移动设备访问。


# 通过设置user-agent,用来模拟移动设备
# 比如模拟 android QQ浏览器
options.add_argument('user-agent="MQQBrowser/26 Mozilla/5.0 (Linux; U; Android 2.3.7; zh-cn; MB200 Build/GRJ22; CyanogenMod-7) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1"')

# 模拟iPhone 6
options.add_argument('user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1"')

Selenium 结合 Chrome 时,可通过配置实验性选项来禁止图片加载,以节省带宽并加速加载。


# 禁止图片的加载
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)

以上内容涵盖了 Selenium 在 Python 中的核心配置技巧,希望能为读者的学习与工作提供帮助,欢迎继续支持本站获取更多技术资源。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表