Appium中開啓iOS webview調試進行h5自動化測試

在作iOS的h5頁面的時候,確定會須要去作webview調試來進行代碼調試,而iOS webview調試須要區分真機和模擬器,由於具體的實現原理不同的,模擬器使用 remote debugger,能夠直接經過safari遠程調試,而真機使用 ios-webkit-debugger-proxy去遠程調試的。
下面具體聊下真機的webview調試的基本原理和實踐。
注意,測試包必需要使用develop證書打包,才能夠進行真機調試。html

  • 原理:
  1. 原理(http://blog.csdn.net/whackw/article/details/45207551):
    1. 首先了解遠程調試協議:
      1. Chrome DevTools是一個調試工具,被集成在chrome瀏覽器(可是是一個獨立的web應用程序);
      2. 經過遠程調試協議(瀏覽器內核起了一個WebSocket服務),將DevTools和瀏覽器內核創建鏈接進行數據交互
    2. ios-webkit-debug-proxy扮演的角色:
      • 由於沒法經過tcp和真機直接聯繫,因此沒法直接採用 remote debugger方式進行調試,因此必需要藉助ios-webkit-debug-proxy來進行代理橋接
      • 結構圖以下:java

  • 模擬器:
    沒使用過,暫時略過此部分;android

  • 真機:
    幾種調試方式,開啓調試必須先設置開啓web-inspector,打開設備設置-Safari-高級-web檢查器並開啓:ios

    1. 使用ios-webkit-debug-proxy(https://github.com/google/ios-webkit-debug-proxy):
      1. 實踐:若是在ios真機的webview頁面執行appium自動化,須要作如下準備:
        1. 安裝 ios_webkit_debug_proxy,在執行webview自動化時必須啓動該服務
          1. brew install ios-webkit-debug-proxy
        2. 運行ios-webkit-debug-proxy
          1. 官方提供的命令:ios_webkit_debug_proxy -c UUID:27753 -d
          2. 使用chrome dev-tools調試
            1. 運行命令ios_webkit_debug_proxy -f chrome-devtools://devtools/bundled/inspector.html
            2. 根據日誌提示,得到端口並打開頁面對應端口頁面,如localhost:9221
            3. 點擊設備提示拷貝連接到地址欄便可訪問;
            4. 原理:
          3. 使用safari調試
            1. 打開mac上的safari瀏覽器開發者模式
            2. 打開設備上的webview頁面
            3. 點擊safari瀏覽器菜單中的開發-device,選擇進程;
          4. 問題:若啓動報錯「Could not connect to lockdownd. Exiting.: Operation now in progress 」,執行如下命令更新解決:
            1. brew update
            2. brew reinstall --HEAD libimobiledevice
            3. brew reinstall -s ios-webkit-debug-proxy
    2. 使用RemoteDebug iOS WebKit Adapter(https://github.com/RemoteDebug/remotedebug-ios-webkit-adapter ),該工具能夠是你像調試android webview同樣調試ios webview頁面,很是方便;
      1. 安裝依賴:
        • brew update
        • brew unlink libimobiledevice ios-webkit-debug-proxy
        • brew uninstall --force libimobiledevice ios-webkit-debug-proxy
        • brew install --HEAD libimobiledevice
        • brew install --HEAD ios-webkit-debug-proxy2.
      2. 安裝最新的adapter:
        • npm install remotedebug-ios-webkit-adapter -g
      3. 鏈接Mac,並讓設備信任該mac;
      4. 啓動adpter:
        • remotedebug_ios_webkit_adapter --port=9000
      5. 打開chrome瀏覽器,輸入chrome://inspect;
        1. 配置「 Discover network targets」,添加localhost:9000
        2. 能夠看到設備列表裏有ios設備
    3. 直接在瀏覽器對h5調試,將h5地址輸入MAC端瀏覽器,加入UA模擬設備訪問
    4. 直接在設備safari中國對h5調試,將地址輸入到設備的safari瀏覽器中,而後使用mac的safari調試
  • appium中使用:
    在appium中使用ios-webkit-debug-proxy :
  1. 直接在capabilities中新增參數以下:git

    capabilities.setCapability("startIWDP", true); 

    iwdp指的就是 ios_webkit_debug_proxygithub

  2. 第二種方式就是直接手動啓動ios-webkit-debug-proxy,而後再執行自動化,注意此時須要制定端口27753(appium默認iwdp端口爲這個)以及設備ID,即web

    ios-webkit-debug-proxy -u uuid:port
 



做者:九歌1992
連接:https://www.jianshu.com/p/5d05a3ed21ab
來源:簡書
簡書著做權歸做者全部,任何形式的轉載都請聯繫做者得到受權並註明出處。chrome

相關文章
相關標籤/搜索