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

如何使用Selenium WebDriver控制cefpython3(57.0)?求技术指导

使用Selenium控制CEFPython的实操指南

兄弟,我太懂你找资料的憋屈了——Selenium搭配CEFPython这组合的文档真的是稀缺到离谱,我之前折腾这个的时候差点秃头,刚好研究过你提到的那个方案,把关键步骤和踩过的坑整理给你,希望能帮到你和其他搜这个问题的朋友:

核心配置:搞定APPLICATION_PATH

你说的教程里提到的APPLICATION_PATH,其实是CEFPython初始化时的关键配置,目的是让CEF能正确加载它的二进制资源文件,同时也是让Chromedriver能识别CEF环境的前提。具体代码里这么写:

import os
from cefpython3 import cefpython as cef

# 初始化CEF,重点设置application_path和调试端口
cef_settings = {
    # 把这个路径指向你的脚本所在目录,或者CEF资源文件夹的路径
    "application_path": os.path.dirname(os.path.abspath(__file__)),
    # 必须开启远程调试端口,Selenium靠这个端口连接
    "remote_debugging_port": 9222
}
cef.Initialize(settings=cef_settings)

这里的remote_debugging_port是核心,Selenium是通过Chrome DevTools协议和CEF通信的,9222是默认的调试端口,只要没被其他程序占用就可以用。

Selenium连接CEF的实操代码

等CEF启动并开启调试端口后,就可以用Chromedriver来连接控制了:

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

# 配置Chrome选项,指定连接到CEF的调试端口
chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")

# 启动Chromedriver,注意替换成你的chromedriver.exe路径
driver = webdriver.Chrome(executable_path="./chromedriver.exe", options=chrome_options)

# 现在就能像控制普通Chrome一样操作CEF窗口了
driver.get("https://example.com")
print(driver.title)

不得不提的踩坑提醒

  • 版本兼容问题:你用的chromedriver2.9对应Chromium 31,但cefpython3==57.0对应Chromium 57,这俩版本的DevTools协议差异很大,大概率会出现连接失败、命令无响应的情况。建议你换成和CEF版本匹配的chromedriver(找对应Chromium 57的版本),兼容性会好很多。
  • 启动顺序不能乱:必须先初始化CEF并开启调试端口,再启动Selenium的driver,否则会连不上调试端口。
  • 资源文件路径要对:确保CEF的locales、swiftshader这些文件夹和你的脚本在同一目录,或者application_path指向正确的路径,不然CEF启动会报错,更别说被Selenium控制了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:51:50