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

Azure Databricks中Selenium网页截图空白问题排查求助

问题分析与解决方法

核心错误点

  • 未触发页面访问:代码里定义了谷歌地址,但从未调用driver.get(login_url)加载目标页面,截图的是浏览器初始空白页,这是空白截图的根本原因。
  • 无头模式配置冲突:同时设置options.headless = False和options.add_argument('--headless'),参数互相矛盾。Databricks无图形界面环境必须启用无头模式,建议用options.headless = True(符合Selenium官方API规范)。
  • 等待逻辑错误:time.sleep(20)放在初始化浏览器之后、页面访问之前,完全无法等待页面加载,应该移到页面访问操作之后。
  • 无头模式缺少窗口尺寸:Firefox无头模式默认窗口极小,会导致截图空白,需手动指定窗口大小。

修正后的完整代码

from selenium import webdriver
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.firefox.options import Options
from webdriver_manager.firefox import GeckoDriverManager
import time
from IPython.display import Image

# Temporary path
screenshot_path = '/tmp/web.png'

# Firefox controller configuration
service = Service(executable_path=GeckoDriverManager().install()) 
options = Options()
options.set_preference("browser.download.folderList", 2)
options.set_preference("browser.download.manager.showWhenStarting", False)
options.set_preference("browser.download.dir", '/tmp/head_count_data/')
# 统一启用无头模式
options.headless = True
# 添加无头模式必要的窗口尺寸参数
options.add_argument('--window-size=1920,1080')
options.binary_location = '/tmp/firefox/firefox'

driver = webdriver.Firefox(options=options, service=service)
login_url = "https://www.google.com/"

# 关键:访问目标页面
driver.get(login_url)
# 等待页面加载完成
time.sleep(5)

# Screenshot
driver.save_screenshot(screenshot_path)

# Show results
Image(filename=screenshot_path)

# 最后记得关闭浏览器
driver.quit()

额外注意事项

  • 确保GeckoDriver版本与Firefox 106.0.1匹配,webdriver-manager通常会自动适配,但如果仍有问题,可以手动指定版本:GeckoDriverManager(version="0.32.0").install()(Firefox 106对应GeckoDriver 0.32.0)。
  • 避免过长的time.sleep,可以改用Selenium的显式等待(如WebDriverWait),更高效稳定。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:32:32