PHP + Selenium 教程:使用便携版 Chrome 与 ChromeDriver 完整实战
前言:在 Windows 环境下,如果直接使用系统安装版 Chrome,经常会因为自动更新导致 Chrome 与 Chromedriver 版本不匹配,出现 “session not created” 等错误。本文将带你从零开始:下载便携版 Chrome、下载对应的 ChromeDriver、在 PHP 中配置 WebDriver,最后运行一个测试脚本。
一、准备工作
1. 下载便携版 Chrome
推荐使用 Google Chrome Portable,它不会自动更新,适合长期固定版本运行。
- 下载地址(可选渠道):PortableApps 官方
- 下载后解压到一个固定目录,例如:
D:\ruanjian\googledriver\GoogleChromePortable\
目录结构示例:
D:\ruanjian\googledriver\GoogleChromePortable\ ├─ GoogleChromePortable.exe ← 启动器(不要用它) └─ App\ └─ Chrome-bin\ └─ chrome.exe ← ★ 这是真正要用的浏览器
2. 下载匹配版本的 ChromeDriver
便携版 Chrome 的版本可在地址栏输入 chrome://version
查看主版本号(例如 126)。
- 下载地址:ChromeDriver 官网
- 选择与你的 Chrome 主版本号一致的 ChromeDriver,例如 Chrome 126 → 下载 ChromeDriver 126。
- 解压到目录,例如:
D:\ruanjian\chromedriver\chromedriver.exe
二、安装 PHP WebDriver 库
PHP 默认不支持 Selenium,需要借助 php-webdriver 库。
composer require php-webdriver/webdriver
三、启动 ChromeDriver 服务
有两种方式:
- 手动启动:双击
chromedriver.exe
,默认监听http://localhost:9515
。 - 自动启动(推荐):写一个批处理脚本或在 PHP 中检测并拉起。
四、编写 PHP 测试脚本
创建文件 test.php
,内容如下:
<?php require 'vendor/autoload.php'; use Facebook\WebDriver\Remote\DesiredCapabilities; use Facebook\WebDriver\Remote\RemoteWebDriver; use Facebook\WebDriver\Chrome\ChromeOptions; // 1) 指定路径 $chromeBinary = 'D:/ruanjian/googledriver/GoogleChromePortable/App/Chrome-bin/chrome.exe'; $chromeDriver = 'D:/ruanjian/chromedriver/chromedriver.exe'; $driverEndpoint = 'http://127.0.0.1:9515'; // 2) Chrome 配置 $options = new ChromeOptions(); $options->setBinary($chromeBinary); $options->addArguments([ "--incognito", // 无痕模式 "--disable-infobars", // 禁用“被自动化控制”提示 "--ignore-certificate-errors", // 忽略证书错误 "blink-settings=imagesEnabled=false", // 禁止加载图片,加快速度 "--no-first-run", "--no-default-browser-check" ]); $options->setExperimentalOption('prefs', [ 'profile.managed_default_content_settings.images' => 2 ]); $capabilities = DesiredCapabilities::chrome(); $capabilities->setCapability(ChromeOptions::CAPABILITY, $options); // 3) 创建驱动 $driver = RemoteWebDriver::create($driverEndpoint, $capabilities); // 4) 打开网页 $driver->get("https://www.google.com"); echo "页面标题:" . $driver->getTitle() . PHP_EOL; // 5) 关闭浏览器 $driver->quit();
五、运行测试
在命令行执行:
php test.php
如果输出类似 页面标题:Google
,说明环境已经配置成功。
六、常见问题排查
1. 报错 “session not created”
- 检查 Chrome 与 ChromeDriver 版本是否匹配(主版本号必须一致)。
- 确认
setBinary()
指向的是 chrome.exe,而不是 GoogleChromePortable.exe。
2. 报错 “user data directory is already in use”
- 说明
--user-data-dir
的目录被别的 Chrome 占用。 - 解决方案:不要使用固定目录,或为每次启动生成一个唯一目录。
3. Curl error / Failed to connect
- 确认 ChromeDriver 已经启动并监听 9515 端口。
- 尝试使用
http://127.0.0.1:9515
代替localhost
。
七、总结
通过便携版 Chrome + 对应版本 ChromeDriver,你可以彻底规避 Chrome 自动更新带来的兼容性问题。在 PHP 中使用 Selenium WebDriver,只需正确配置 setBinary()
和驱动路径,就能稳定运行自动化脚本。
发布者:彬彬笔记,转载请注明出处:https://www.binbinbiji.com/jianzhanjiaoliu/3749.html