You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium中webdriver.get()方法不稳定问题求助

解决Selenium webdriver.get()页面空白的实用方案

我之前也碰到过一模一样的问题——明明浏览器窗口打开了,URL栏也显示了目标地址,但页面就是一片空白,不管是简单脚本还是带代理的场景都偶尔发作。折腾了好一阵,总结出几个有效的解决办法,你可以挨个试试:

  • 用显式等待替代固定sleep:
    单纯的time.sleep()太死板,有时候浏览器虽然打开了,但DOM还没渲染完成。试试显式等待页面上的关键元素加载出来,比如谷歌的搜索框:

    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
    
    chrome = webdriver.Chrome()
    # 设置最多等待10秒
    wait = WebDriverWait(chrome, 10)
    chrome.get("https://www.google.com")
    # 等待搜索框出现,确认页面真的加载完成
    wait.until(EC.presence_of_element_located((By.NAME, "q")))
    

    这种方式能确保脚本继续执行前,页面已经处于可交互状态,而不是停留在URL显示的阶段。

  • 调整Chrome启动参数,避免渲染阻塞:
    给Chrome加几个参数,禁用一些可能干扰页面加载的特性:

    from selenium import webdriver
    
    chrome_options = webdriver.ChromeOptions()
    # 禁用GPU加速,部分环境下会导致渲染异常
    chrome_options.add_argument('--disable-gpu')
    # 禁用沙箱模式,解决部分系统权限引发的空白问题
    chrome_options.add_argument('--no-sandbox')
    # 禁用所有扩展,排除扩展干扰
    chrome_options.add_argument('--disable-extensions')
    # 如果不需要可视化,可以试试无头模式(新版本用--headless=new)
    # chrome_options.add_argument('--headless=new')
    
    chrome = webdriver.Chrome(options=chrome_options)
    chrome.get("https://www.google.com")
    
  • 优先检查ChromeDriver和Chrome版本匹配:
    这是最容易踩坑的点!ChromeDriver的版本必须和你本地安装的Chrome浏览器大版本完全一致(比如Chrome 118.x对应ChromeDriver 118.x.x)。版本不匹配会导致各种奇怪的加载问题,包括页面空白。你可以在Chrome的「设置-关于Chrome」里看版本,然后下载对应版本的ChromeDriver替换当前的。

  • 代理场景的额外配置:
    如果用代理,除了--proxy-server,还要注意这些:

    • 先手动用浏览器挂这个代理访问目标网站,确认代理本身是可用的
    • 加上证书忽略参数,避免代理证书问题导致加载失败:
      chrome_options.add_argument('--ignore-certificate-errors')
      
    • 代理地址要明确协议,比如http://xxx.xxx.xxx.xxx:port,不要只写IP和端口
  • 修改页面加载策略:
    默认的加载策略是等待页面所有资源加载完成(normal),有些网站可能有慢资源阻塞加载。改成eager(等待DOM加载完成就继续)或者none(立即返回,自己控制等待):

    chrome_options.page_load_strategy = 'eager'
    # 或者 chrome_options.page_load_strategy = 'none'
    
  • 每次启动干净的浏览器环境:
    旧的缓存或用户数据可能干扰加载,每次启动时指定一个临时的用户数据目录:

    import tempfile
    from selenium import webdriver
    
    chrome_options = webdriver.ChromeOptions()
    # 创建临时目录
    temp_dir = tempfile.mkdtemp()
    chrome_options.add_argument(f'--user-data-dir={temp_dir}')
    
    chrome = webdriver.Chrome(options=chrome_options)
    chrome.get("https://www.google.com")
    

我当时就是版本不匹配加显式等待没做好导致的问题,调整后基本没再出现过空白情况。你可以先从版本检查开始,这个解决的概率最高。

内容的提问来源于stack exchange,提问作者StyleZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:57:39