近期接到需求:對線上手機網頁進行自動化測試與監控。經對比 Selendroid、Appium、Genymotion 等方案:
考慮到手機瀏覽器多基於 WebKit,桌面版 Chrome 同源,最終確定技術棧:Java + Selenium + Chrome 手機模擬模式。
按官方文檔快速實現手機模擬、點擊、JS 注入等功能,但呼叫 TouchActions 時拋出類型轉換異常。追蹤源碼發現,TouchActions 建構子要求 Driver 實作 HasTouchScreen 介面,而預設 ChromeDriver 未實作該介面。

GitHub 社群提供修改 Selenium 源碼重打包的方案,但侵入性強。採用更輕量的繼承策略:
// 支援 TouchAction 的 ChromeDriver 包裝類
public class MobileChromeDriver extends ChromeDriver implements HasTouchScreen {
private RemoteTouchScreen touch;
public MobileChromeDriver(Capabilities capabilities) {
super(capabilities);
touch = new RemoteTouchScreen(getExecuteMethod());
}
@Override
public TouchScreen getTouch() {
return touch;
}
}
將原有 new ChromeDriver() 替換為 new MobileChromeDriver(),即可直接使用 TouchActions 進行滑動、長按、多點觸控等手勢操作。
測試通過:H5 頁面觸控事件模擬正常,無需修改 Selenium 源碼,避免了版本升級帶來的維護成本。