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/zh-hant/jianzhanjiaoliu/3749.html