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頁面

  

 

  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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章