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

(0)
彬彬筆記彬彬筆記
上一篇 30分鐘前
下一篇 2020年3月19日 17:18

相關推薦

發表回復

登錄後才能評論
蜀ICP備14017386號-13