使用Facebook php-webdriver配置Selenium时遇ChromeDriverService创建失败
解决Selenium + Facebook php-webdriver的ChromeDriverService创建失败问题
我来帮你排查这个报错问题,结合你已经完成的操作,咱们一步步梳理可能的原因和解决办法:
1. 先理清核心冲突:不要同时启动两个服务
你现在同时开了Selenium服务器(4444端口)和ChromeDriver(9515端口),这其实是两种完全不同的运行模式,大概率是这个混淆导致了报错。php-webdriver支持两种连接Chrome的方式,你只需要选其中一种:
- 模式一:通过Selenium服务器中转:由Selenium统一管理ChromeDriver进程,不需要单独启动ChromeDriver
- 模式二:直接连接ChromeDriver:不需要启动Selenium服务器,直接和本地ChromeDriver服务通信
2. 模式一:通过Selenium服务器运行的配置步骤
如果你想走Selenium服务器的路子,按以下调整:
- 先关掉已经启动的ChromeDriver进程(9515端口的那个)
- 确保Selenium服务器正常运行在4444端口
- 检查你的PHP代码,初始化逻辑应该是这样:
use Facebook\WebDriver\Remote\RemoteWebDriver; use Facebook\WebDriver\Remote\DesiredCapabilities; $driver = RemoteWebDriver::create( 'http://localhost:4444/wd/hub', DesiredCapabilities::chrome() );
- 关键:要让Selenium能找到ChromeDriver
- 把chromedriver.exe所在路径添加到系统
PATH环境变量里; - 或者启动Selenium时直接指定ChromeDriver路径,比如:
java -jar selenium-server-standalone.jar -Dwebdriver.chrome.driver="C:\你的项目路径\chromedriver.exe"
- 把chromedriver.exe所在路径添加到系统
3. 模式二:直接连接ChromeDriver的配置步骤
如果想直接连ChromeDriver,那不需要Selenium服务器:
- 关掉Selenium服务器(4444端口的进程)
- 确保ChromeDriver正常启动,启动命令可以用:
chromedriver.exe --port=9515 - PHP代码要改成直接连接ChromeDriver的地址:
use Facebook\WebDriver\Remote\RemoteWebDriver; use Facebook\WebDriver\Chrome\ChromeOptions; use Facebook\WebDriver\Remote\DesiredCapabilities; $options = new ChromeOptions(); // 可选:添加无头模式等参数,比如 $options->addArguments(['--headless']); $capabilities = DesiredCapabilities::chrome(); $capabilities->setCapability(ChromeOptions::CAPABILITY, $options); $driver = RemoteWebDriver::create( 'http://localhost:9515', // 注意这里没有/wd/hub后缀 $capabilities );
4. 必查的坑:版本匹配!
这是最容易忽略的点:ChromeDriver的版本必须和你本地安装的Chrome浏览器大版本一致!比如Chrome是118.x,ChromeDriver也要用118.x的版本。你可以在Chrome的设置->关于Chrome里看浏览器版本,再对应下载ChromeDriver。
其他小排查点
- 权限问题:Windows下可以试试右键以管理员身份运行ChromeDriver,避免被杀毒软件拦截;
- 路径问题:如果没把ChromeDriver加到PATH,一定要在启动命令或代码里明确指定它的完整路径,不然程序找不到。
你可以先选一种模式调整配置,优先检查版本匹配和服务的唯一性,应该就能解决这个报错了。
内容的提问来源于stack exchange,提问作者fractal5
相关产品推荐
相关产品推荐

