Selenium 2.52+ 穩定性顯著提升。本文以 Java 為例,涵蓋 ChromeDriver/PhantomJS 環境配置、啟動參數調優、無頭模式、多窗口句柄切換、元素定位與資源清理完整實戰指南。
selenium-java:2.52.0(或更新版)。// 指定驅動路徑
System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir") + "\\driver\\chromedriver.exe");
// 基礎啟動
WebDriver driver = new ChromeDriver();
driver.get("https://www.google.com/");
// 進階 ChromeOptions
ChromeOptions options = new ChromeOptions();
// 緩存目錄隔離
options.addArguments("--disk-cache-dir=" + System.getProperty("user.dir") + "\\cache");
// 常用啟動參數
options.addArguments("--start-maximized"); // 最大化
options.addArguments("--window-size=1920,1080"); // 固定尺寸
options.addArguments("--disable-extensions"); // 禁用擴展
options.addArguments("--disable-translate"); // 禁用翻譯
options.addArguments("--ignore-certificate-errors"); // 忽略證書錯誤
options.addArguments("--headless"); // 無頭模式 (Chrome 59+)
options.addArguments("--no-sandbox"); // CI 環境必需
options.addArguments("--disable-dev-shm-usage"); // 解決 Docker 共享內存不足
WebDriver driver = new ChromeDriver(options);
System.setProperty("phantomjs.binary.path", System.getProperty("user.dir") + "\\driver\\phantomjs.exe");
WebDriver driver = new PhantomJSDriver();
driver.get("https://www.google.com/");
注意:PhantomJS 已停止維護,建議改用 **Chrome/Firefox Headless 模式**。
多窗口/標籤頁切換
3. 返回主文檔:`driver.switchTo().defaultContent()`。
4. 返回父 iframe:`driver.switchTo().parentFrame()`。
下篇將詳細講解動態 iframe 定位、跨域限制處理、等待策略。資源清理
Selenium Java API 文檔