首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

破解 ChromeDriver 不支援 TouchActions 的難題:實現移動端觸控自動化測試

     編輯:Java 綜合教學

背景:移動端 Web 自動化的技術選型

近期接到需求:對線上手機網頁進行自動化測試與監控。經對比 Selendroid、Appium、Genymotion 等方案:

  • 真機/虛擬機方案優點:真實模擬用戶環境
  • 缺點:真機需持續連接電腦,虛擬機效率低,Genymotion 免費版無法聯網

考慮到手機瀏覽器多基於 WebKit,桌面版 Chrome 同源,最終確定技術棧:Java + Selenium + Chrome 手機模擬模式。

攔路虎:TouchActions 初始化失敗

按官方文檔快速實現手機模擬、點擊、JS 注入等功能,但呼叫 TouchActions 時拋出類型轉換異常。追蹤源碼發現,TouchActions 建構子要求 Driver 實作 HasTouchScreen 介面,而預設 ChromeDriver 未實作該介面。

TouchActions 報錯堆疊

解決方案:繼承 ChromeDriver 實作 HasTouchScreen

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 源碼,避免了版本升級帶來的維護成本。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved