Airtest是由網(wǎng)易游戲推出的UI自動化測試解決方案,是一個跨平臺的、 基于圖像識別 的UI自動化測試框架,適用于游戲和App,支持平臺有Windows、Android和iOS。
并且提供了基于UI控件識別的Poco框架,目前也支持Android原生、iOS原生、Unity3D、cocos2dx、UE4和Egret等平臺。
為了讓測試人員更好上手,網(wǎng)易還貼心地提供了AirtestIDE工具,內(nèi)置了Airtest和Poco的相關(guān)插件功能,能夠使用它快速簡單地編寫 Airtest 和 Poco 代碼。
如果你是一個自動化新手同學,建議借助AirtestIDE編寫/運行自動化腳本;但是當你能夠熟練使用Airtest和Poco框架之后,那就使用python語言自由發(fā)會編寫自動化腳本吧。
Allen老師今天就帶著大家來做一個簡單的案例,帶大家一起體驗airtest帶給我自動化測試的方便體驗。
一、案例說明
啟動手機淘寶app
打開淘寶首頁的今日爆款
選擇爆款首頁中的第一個商品
商品頁復制商品的淘口令
關(guān)閉淘寶app
啟動手機淘特app
等待彈出淘口令
點擊商品鏈接
關(guān)閉淘特app
二、使用airtestide錄制、運行腳本
1、啟動airtest并創(chuàng)建airtest項目
2、連接手機設(shè)備
若連接android手機設(shè)備,需要本地安裝adb軟件,手機中開啟開發(fā)者選項、usb調(diào)試,并連接手機到pc電腦。
在airtest的設(shè)備窗口刷新adb,則會顯示手機設(shè)備,點擊connect按鈕。
3、開發(fā)業(yè)務(wù)腳本
我們采用airtest的poco框架,識別頁面app的頁面元素并進行定位、操作。
Poco輔助助手中定位到app的元素,直接雙擊該元素即可生成poco語法。
定義poco對象:poco = AndroidUiautomationPoco(force_restart=False)
如點擊商品分享按鈕:poco("com.taobao.taobao:id/uik_public_menu_action_icon").click()
在代碼編寫中還會用到一些常用的語法:
連接手機設(shè)備:android_device = connect_device('android://127.0.0.1:5037/28240ad5')
其中28240ad5為設(shè)備序列號,可以通過adb devices獲取
啟動app應用:start_app('com.taobao.taobao')
包名可以通過:adb shell dumpsys window | findstr mCurrentFocus獲取
關(guān)閉app應用:stop_app('com.taobao.taobao')
強制等待:sleep(10.0)
點擊設(shè)備上固定的坐標:touch((500.1000))
根據(jù)頁面文本點擊元素:poco(text="今日爆款").click()
下面是完整的實現(xiàn)上述業(yè)務(wù)的腳本:
# -*- encoding=utf8 -*-
__author__ = "allen"
from airtest.core.api import *
from airtest.cli.parser import cli_setup
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
auto_setup(__file__, logdir=True, devices=["android://127.0.0.1:5037/28240ad5?cap_method=MINICAP&&ori_method=MINICAPORI&&touch_method=MINITOUCH",])
android_device = connect_device('android://127.0.0.1:5037/28240ad5')
# script content
print("start...")
start_app('com.taobao.taobao')
#后續(xù)的元素定位都是基于這個組件
# poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
poco = AndroidUiautomationPoco(force_restart=False)
poco(text="今日爆款").click()
# 商品是變化的
touch((500.1000))
sleep(10.0)
poco("com.taobao.taobao:id/uik_public_menu_action_icon").click()
poco("android.widget.FrameLayout").offspring("com.taobao.taobao:id/uik_fl_container_share").child("com.taobao.taobao:id/uik_public_menu_content_1")[1].child("android.widget.LinearLayout").child("android.widget.FrameLayout").child("android.widget.FrameLayout")[1].child("android.widget.FrameLayout").click()
# 關(guān)閉淘寶進,打開淘特
stop_app('com.taobao.taobao')
start_app('com.taobao.litetao')
# 等待口令打開
sleep(10.0)
# 點擊查看詳情
poco("com.taobao.litetao:id/tpd_item_action").click()
sleep(10.0)
stop_app('com.taobao.litetao')
print("end...")
3、保存腳本
在airtestide中文件菜單,點擊保存文件到本地磁盤目錄。
4、運行腳本
點擊開始運行按鈕,既可以啟動運行。
運行結(jié)果見視頻:《airtest腳本演示.mp4》
5、查看運行報告
在airtestide中運行菜單下,點擊打開運行目錄,選擇log目錄,即可展示報告。
三、使用IDE的運行腳本命令
我們使用AirtestIDE自帶的環(huán)境跑腳本時,在log查看窗的頂部會刷出運行當前腳本的一條命令,我們可以直接復制該命令去命令行終端運行:
直接復制此條命令運行腳本,實際上我們還是利用了AirtestIDE自帶的環(huán)境跑腳本,而無需額外部署本地Python環(huán)境 。
切換到airtest安裝目錄下,啟動cmd窗口,運行上面的命令(復制的),結(jié)果與再AirtestIDE中運行效果一致。
四、使用python環(huán)境運行air腳本
如果直接使用本地python環(huán)境進行,要求本地環(huán)境在python3以上,python3.9以內(nèi),本文采用python3.8環(huán)境。
然后就在這里Python環(huán)境里面,像安裝其它Python第三方庫一樣,安裝我們的自動化測試框架。
# 安裝Airtest框架
pip3 install airtest
# 安裝Poco框架;編寫了Poco語句就需要安裝
pip3 install pocoui
# 安裝airtest-selenium框架;編寫了airtest-selenium語句就需要安裝
pip3 install airtest-selenium
如果有出現(xiàn)報錯或者超時,要確定python版本或者更換python鏡像源,建議使用清華源或者其它國內(nèi)源安裝.
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple airtest
成功安裝之后,我們可以使用pip list命令,查看我們的安裝情況及框架版本信息:
作者嘗試上面的三個庫的版本是可用的,如果直接使用上述安裝不可用,可能是更新的新版本的兼容性問題,可以嘗試使用指定版本安裝,切記poco與pocoui,兩者會產(chǎn)生沖突。
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple airtest==1.1.11
配置好環(huán)境之后,切換到保存的air腳本目錄下,找到taobao.py文件,連接收手機設(shè)備,執(zhí)行該文件即可。
執(zhí)行結(jié)果與上面兩種執(zhí)行效果一致。
更多關(guān)于軟件測試培訓的問題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項目實操的話可以點擊咨詢課程顧問,獲取試聽資格來試聽我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門到精通。