PHP + Selenium 教程:使用便携版 Chrome 与 ChromeDriver 完整实战

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 服务

有两种方式:

  1. 手动启动:双击 chromedriver.exe,默认监听 http://localhost:9515
  2. 自动启动(推荐):写一个批处理脚本或在 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

(0)
彬彬笔记彬彬笔记
上一篇 42分钟前
下一篇 2023年2月12日 16:02

相关推荐

发表回复

登录后才能评论
蜀ICP备14017386号-13