小程序模板網(wǎng)

小程序測(cè)試全攻略,還學(xué)不會(huì)你來(lái)找我(含實(shí)操代碼)

發(fā)布時(shí)間:2020-05-20 09:42 所屬欄目:小程序開發(fā)教程

前言

每隔幾天,小編都會(huì)收到同學(xué)們對(duì)于小程序測(cè)試的靈魂追問(wèn):Airtest支持小程序測(cè)試嗎?用Poco不能很好地對(duì)小程序進(jìn)行UI識(shí)別怎么辦?公眾號(hào)菜單里面的H5頁(yè)面能用Poco測(cè)嗎?

在此,小編統(tǒng)一回復(fù):

  1. Airtest是支持小程序測(cè)試的;
  2. 小程序是基于騰訊的X5內(nèi)核開發(fā)的,默認(rèn)情況下,Poco對(duì)小程序的元素不能很好地識(shí)別,需要進(jìn)入TBS調(diào)試頁(yè)面設(shè)置才能更好識(shí)別小程序的控件;
  3. 進(jìn)行TBS設(shè)置之后,公眾號(hào)菜單的H5頁(yè)面也能夠用Poco框架進(jìn)行測(cè)試。

所以,在下文中,小編會(huì)詳細(xì)介紹如何用Airtest和Poco來(lái)對(duì)小程序進(jìn)行測(cè)試。

用Airtest測(cè)試小程序

Airtest是基于圖像識(shí)別來(lái)進(jìn)行UI測(cè)試的,所以只要借助IDE提供的各種便捷功能,我們就可以很好地對(duì)小程序進(jìn)行測(cè)試,如下是一個(gè)測(cè)試的小例子:

 

# -*- encoding=utf8 -*-
__author__ = "19617"
from airtest.core.api import *
auto_setup(__file__)
# 點(diǎn)擊微信圖標(biāo)
touch(Template(r"tpl1584336781668.png", record_pos=(0.353, -0.526), resolution=(1080, 2244)))
# 下拉滑動(dòng)進(jìn)入小程序頁(yè)面
swipe(Template(r"tpl1584336820818.png", record_pos=(0.004, -0.75), resolution=(1080, 2244)), vector=[0.0044, 0.5737])
sleep(1.0)
# 點(diǎn)擊目標(biāo)小程序
touch(Template(r"tpl1584336839508.png", record_pos=(-0.344, -0.427), resolution=(1080, 2244)))
sleep(1.0)

# 等到頁(yè)面上某個(gè)元素出現(xiàn)
wait(Template(r"tpl1584336861709.png", record_pos=(0.007, -0.689), resolution=(1080, 2244)))
sleep(1.0)

touch(Template(r"tpl1584336875201.png", record_pos=(-0.014, -0.454), resolution=(1080, 2244)))
sleep(1.0)

# 在搜索框輸入文字并執(zhí)行搜索
text("蛋糕",search=True)

assert_exists(Template(r"tpl1584352235391.png", record_pos=(0.002, -0.453), resolution=(1080, 2244)), "找到目標(biāo)")

print("運(yùn)行成功")
復(fù)制代碼

盡管上述的例子非常簡(jiǎn)單,但利用Airtest來(lái)對(duì)小程序進(jìn)行測(cè)試的時(shí)候,我們?nèi)孕枰⒁庖韵聨c(diǎn):

  1. 并不是所有小程序都適合用Airtest來(lái)進(jìn)行測(cè)試,如果小程序的頁(yè)面樣式經(jīng)常發(fā)生變化,那么圖像腳本也經(jīng)常要根據(jù)樣式變化而進(jìn)行更新維護(hù);
  2. 如果腳本中存在多個(gè)連續(xù)的圖像識(shí)別操作,特別是操作會(huì)發(fā)生頁(yè)面加載、頁(yè)面切換等情況,最好在連續(xù)操作之間加入sleep(1.0),給一定的緩沖時(shí)間讓頁(yè)面穩(wěn)定,可以大大減少因?yàn)轫?yè)面未加載完全而導(dǎo)致的圖像識(shí)別失敗;
  3. 對(duì)于無(wú)法用Airtest完成的測(cè)試操作,我們可以考慮結(jié)合Poco來(lái)完成

用Pcoco測(cè)試小程序

開篇我們就提到過(guò),微信和QQ內(nèi)置的瀏覽器內(nèi)核不是Android原生的WebView,而是他們自家的 X5 WebView 內(nèi)核。我們需要切換到系統(tǒng)WebView內(nèi)核,這樣Poco才能更好地識(shí)別出小程序的各種UI控件。

很多同學(xué)未進(jìn)行設(shè)置,就直接用Poco去獲取控件,很可能會(huì)遇到下圖中的情況:

 

小程序頁(yè)面內(nèi)的很多元素都不能獲取到。
如何進(jìn)行設(shè)置

① 打開微信中任意一個(gè)聊天框,輸入 debugtbs.qq.com,點(diǎn)擊進(jìn)入TBS調(diào)試頁(yè)面,再點(diǎn)擊頁(yè)面內(nèi)的“安裝線上內(nèi)核”:

 

 

② 安裝成功后,我們需要重啟微信才可以生效;

③ 再次進(jìn)去剛才的TBS調(diào)試頁(yè)面,檢查我們的設(shè)置是否生效,點(diǎn)擊“查看版本信息”,版本信息為 0(null) 則設(shè)置成功:

 

 

設(shè)置成功以后即可用Poco對(duì)小程序進(jìn)行測(cè)試。

 

 

Poco測(cè)試小程序?qū)嵅?/h5>

依舊以上述的小程序?yàn)槔?,?lái)看看用poco框架如何測(cè)試小程序:

 

# -*- encoding=utf8 -*-
__author__ = "19617"
from airtest.core.api import *

from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
auto_setup(__file__)

# 傳入微信的包名啟動(dòng)微信app
start_app("com.tencent.mm")
# 下滑進(jìn)去小程序頁(yè)面
swipe((550,250),(550,1200))
sleep(2.0)

# 點(diǎn)擊下廚房小程序
poco("com.tencent.mm:id/cud").offspring("com.tencent.mm:id/dai").child("android.widget.RelativeLayout").offspring("com.tencent.mm:id/le").offspring("com.tencent.mm:id/lh").child("android.widget.LinearLayout")[2].offspring("com.tencent.mm:id/eko").child("android.widget.RelativeLayout")[0].offspring("com.tencent.mm:id/cik").click()

sleep(2.0)
# 點(diǎn)擊搜索框
poco(text="今天想吃點(diǎn)什么?").click()
sleep(1.0)

# 再次點(diǎn)擊搜索框
poco("android.widget.EditText").click()

sleep(1.0)

# 輸入搜索詞“蛋糕”
poco("android.widget.EditText").set_text("蛋糕")

# 點(diǎn)擊搜索
poco(text="搜索").click()

# 打印找到第一個(gè)配方的標(biāo)題
print(poco(text="超容易上手的古早蛋糕").get_text())
復(fù)制代碼

例子中有以下幾點(diǎn)需要注意:

  1. start_app()需要傳入的參數(shù)是APP的包名,關(guān)于如何獲取APP包名大家可以自行百度,方法很多;
  2. 連續(xù)操作之間仍需要適當(dāng)使用一些sleep(1.0),防止頁(yè)面切換時(shí)UI樹沒(méi)來(lái)得及刷新導(dǎo)致下一步操作的控件查找失敗。

測(cè)試公眾號(hào)菜單的H5頁(yè)面

如上,通過(guò)設(shè)置切換到系統(tǒng)WebView內(nèi)核之后,Poco也能夠獲取微信公眾號(hào)菜單的H5頁(yè)面元素:

 

小結(jié)

① TBS調(diào)試只適用于Android系統(tǒng),iOS暫不支持;

② 在小程序測(cè)試的實(shí)操中,我們可以靈活地交替使用Airtest和Poco腳本,比如:有些編輯框無(wú)法使用Poco的set_text接口,我們可以先使用poco進(jìn)行點(diǎn)擊操作,再用Airtest的text接口。

③上文使用設(shè)備詳情:IDE版本1.2.3;手機(jī)型號(hào)MI 8 SE,安卓9;微信版本7.0.12。


易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉(cāng)庫(kù):starfork
本文地址:http://m.u-renovate.com/wxmini/doc/course/25223.html 復(fù)制鏈接 如需定制請(qǐng)聯(lián)系易優(yōu)客服咨詢:800182392 點(diǎn)擊咨詢
QQ在線咨詢
AI智能客服 ×