天天看點

Appium-Hybrid Mobile App

定義

可以了解為通過 Web 網絡技術(如 HTML,CSS 和 JavaScript)與 Native 相結合的混合移動應用程式。H5主要用于界面的編寫,比如按鈕、單選框以及下拉框等; CSS3用于對界面細節化的修飾,設定不同的樣式;JS實作資料互動。Native與HTML相比,性能穩定、互動流暢,可以調用本地硬體和通路本地資源,但是開發和維護成本高,釋出周期長。而HTML有着跨平台,開發成本第,更新快等有點。

現在很多app都是由原生頁面(native)和webview頁面(H5)組成,在自動化測試中需要判斷頁面是native還是webview。

Hybrid 測試流程

  1. 進入的頁面具有webview
  2. 使用uiautomatorviewer工具或contexts方法進行判斷存在webview
  3. 使用context方法切換進webview
  4. 定位,操作
  5. 再次使用context方法傳回native

webview與native的判斷

  1、uiautomatorviewer中判斷

  在UI Automator Viewer中,檢視結構,如果節點的class 是android.webkit.WebView 則可判斷為 H5頁面

  

Appium-Hybrid Mobile App

  2、通過contexts方法判斷

    driver.contexts

# ['NATIVE_APP', 'WEBVIEW_com.tencent.xxx']

contexts列印結果為:['NATIVE_APP', 'WEBVIEW_com.tencent.xxx']

NATIVE_APP則表示為app原生頁面。

webview_com.XXXX 表示為 webview 頁面

webview 操作

由于 native 和 webview 是兩種不同頁面,是以要在native中操作webview需要先切換到webview頁面,切換方法:

由于driver.contexts傳回的是一個清單,當然可以使用index擷取webview

driver.switch_to.context(driver.contexts[1])

在webview中操作完成後,需要切換到NATIVE_APP繼續操作。可以使用driver.contexts傳回值的index=0操作,或者直接使用NATIVE_APP進行操作

driver.switch_to.context(driver.contexts[0]) 或 driver.switch_to.context(“NATIVE_APP”)

錯誤一解決:

出現:Original error: No Chromedriver found that can automate Chrome ‘80.0.3987.122’表示浏覽器版本與驅動版本不比對

解決方法:下載下傳比對的chrome浏覽器版本與驅動,手機與PC端chrome的版本最後一緻

chrome driver 下載下傳位址:https://npm.taobao.org/mirrors/chromedriver

chrome driver下載下傳後存放在 ~\Appium\resources\app\node_modules\appium\node_modules\appium-chromedriver\chromedriver\win 下

或者:在腳本的caps中添加driver:

caps["chromedriverExecutable"] = r"xxxxxxxxxx\projectAutoTest\chromedriver.exe"

或者:

caps["chromedriverExecutableDir"] = r"xxxxxxxxxx\projectAutoTest\"

錯誤二解決:

使用contexts無法擷取webview

1、android4.4以上需要開啟webView的遠端調試開關

2、測試中開啟debug