如何使用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
相关产品推荐
相关产品推荐

