App自動化測試是怎麼實現H5測試的

移動端 app 自動化框架很多,但是有一些框架因爲不支持混合應用測試,一直沒有完全流行。比較典型的是經典的 Python 框架 uiautomator2, 這個框架簡單好用,沒有 appium 那樣複雜的 api 調用,受到不少 python 自動化工程師的青睞。

但是不管是官方文檔,還是民間教程,基本都沒有涉及到用它做混合應用測試,本文提供一種非常簡單的方法,只需要多加 4 行代碼,就能讓 uiautomator2 支持混合應用測試。

什麼是混合應用

移動端應用有兩種典型的開發方式,一種是原生的 native app,一種是基於網頁開發技術的 web app。 原生應用的體驗感更好,但是如果想同時開發安卓應用和 ios 應用,需要不同的原生開發技術。 web 應用可以非常輕鬆的做到安卓和 ios 的跨平臺開發,它的體驗感要稍微差一些,不像原生應用那麼流暢。

Hybrid App(混合模式移動應用)是介於 web app和native app之間的開發方式,可以在原生界面中嵌套網頁,因而可以同時具備體驗感和跨平臺能力。

目前主流的移動端 app 測試框架 appium 具備混合應用測試的能力,但是這個框架搭建和使用都比較麻煩,封裝的方法也沒有那麼 pythonic,因此有很多公司不想使用,他們更加喜歡簡潔優雅的 python uiautomator2 框架。 非常遺憾,這個框架目前沒有支持混合應用測試。

WebView自動化測試步驟

  • 第一步,通過原生操作進入 webview 網頁;
  • 第二步,使用 selenium 等網頁測試工具進入網頁;
  • 第三步,使用 selenium 等網頁測試工具測試。

這中間的關鍵步驟在於如何使用 selenium, 如果直接打開一個新的 selenium 會話,那麼會打開一個新的頁面,和 app 中的 webview 是分開的,因此無法測到嵌套網頁。 selenium 必須要和 app 建立某種關係,使他們綁定在一起,操作 selenium 時就是直接操作 app 當中的網頁。
在這裏插入圖片描述

通過 uiautomator2 進入 webview

這裏就是最基本的 uiautomator2 操作,詳細操作可以查看 官方文檔, 這裏使用的 app 是 android bootstrap,可以直接 點擊下載

d = u2.connect()
d.app_start('com.github.android_app_bootstrap')
d(text='Login').click()
d(text='Baidu').click()

selenium 連接 webview

APP 的第三個菜單可以直接打開 baidu 網頁,從而到 webview 網頁。 如果不使用 selenium 連接,直接通過 uiautomator2 定位網頁中的元素,是會報錯的。
在這裏插入圖片描述
那如何通過 selenium 連接 webview 呢?

  • 首先,通過設備 d 獲取當前操作的 app, 從而得到包名
  • 然後,初始化一個 Chrome 瀏覽器對象
  • 需要注意的是,Chrome 對象需要添加額外的參數,指定連接的設備,webview 綁定的報名,以及配置在 app 中使用 android 瀏覽器。
    在這裏插入圖片描述
    之後的操作就和 selenium 做 web 自動化測試沒有任何區別了,無非就是點擊網頁,做自動化操作:
driver = webdriver.Chrome('chromedriver_68.exe', options=options)
driver.implicitly_wait(8)

driver.find_element('id', 'index-kw').send_keys('你好')

WebView自動化測試在瀏覽器中的說明

是不是很好奇,我怎麼知道要這麼寫代碼,才能連接 webview ,達到測試效果? 其實世間沒有那麼多神祕的學習方法,只要你肯用心,一定是可以找到學習的路徑的。 這段代碼清清楚楚的寫在 chrome webdriver 的官方文檔中,只是,你可能打不開。 截屏看一下:

在這裏插入圖片描述
其他 webdriver 的配置也可以查看 MDN web docs

展示效果:
在這裏插入圖片描述


我是九柄,公衆號【 九柄 】,分享軟件測試文章、面試、教程資料,歡迎來看看。

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