一、環境搭建
1、Airtest客戶端下載
訪問官網http://airtest.netease.com/,根據自己的系統下載相應的客戶端安裝;
2、python工具下載與環境搭建
在本地python環境中安裝airtest和pocoui,然后用命令行運行腳本;
1、建議使用3.7以下 版本,下載python3;
2、下載python后,配置本地的運行環境,詳見:http://airtest.netease.com/docs/cn/4_run_script/run_script.html#id4
1)使用 pip 安裝Airtest框架 pip install airtest
2)若運行代碼時,在cv2模塊報 ImportError: DLL load failed: 找不到指定模塊
的錯,如果使用的python版本低於3.7,請直接運行:
pip uninstall opencv-contrib-python
# 若以下安裝語句運行失敗,可以嘗試更新pip到最新版本后重試
pip install opencv-contrib-python==3.2.0.7
3)Poco安裝
使用 pip 安裝poco框架 pip install pocoui
,請注意庫的名稱為 pocoui
,不要填錯。
3、在Airtest中集成python環境
在Airtest中集成python環境的話,需要安裝python之后,再填寫python的路徑到AirtestIDE中;可以參考:http://airtest.netease.com/docs/cn/4_run_script/run_script.html#airtestidepython 進行集成;
二、Airtest使用
1、使用方法
具體請參考官方文檔:http://airtest.netease.com/docs/cn/,請優先看快速5分鍾使用教程:http://airtest.netease.com/tutorial/Tutorial.html
2、在Airtest IDE中連接手機
在Air test中連接手機請查看連接:http://airtest.netease.com/docs/cn/2_device_connection/1_android_phone_connection.html#androidusb
手機連上Airtest之后,會向手機中咱裝3個app,如下:
pocoservice是支撐poco操作的app,yosemite是airtest的輸入法,安裝之后,手機的默認輸入法會變成這個輸入法,如果需要改回來原來的輸入法,需要手動到手機設置里面進行修改;
3、在代碼中連接手機
如果是在 .py
腳本文件中 import airtest/poco
,希望以普通python腳本的方式來運行的話,可以在腳本代碼中使用 connect_device
接口:
1 from airtest.core.api import * 2 connect_device("Android:///") # 傳入的是設備字符串
4.多個手機交互
如果case中涉及到兩個手機交互的,可以在.py文件中連接多個手機,需要在哪個手機上操作,就需要在腳本中使用set_cerrent()借口來切換到相應的手機上;
1 device1 = "c17a4cb4" #設備1 2 device2 = "RKK0217C15003363" #設備2 3 dev1 = connect_device("android://127.0.0.1:5037/"+device1)#連接設備1 4 dev2 = connect_device("android://127.0.0.1:5037/"+device2)#連接設備2 5 poco1 = AndroidUiautomationPoco(dev1) #初始化設備1 6 poco2 = AndroidUiautomationPoco(dev2) #初始化設備2 7 set_current(device1)#切換到手機1 8 set_current(device2)切換到手機2
5.case舉例
初始化設備之后就可以進行相關設備的poco操作了,舉個例子:
這個例子是打開微信,點擊聊天信息中的一個好友,然后清除好友聊天的例子;
1 from poco.drivers.android.uiautomation import AndroidUiautomationPoco 2 device1 = "c17a4cb4" #設備號 3 dev1 = connect_device("android://127.0.0.1:5037/"+device1)#連接師傅手機 4 poco1 = AndroidUiautomationPoco(dev1) #實例化手機 5 auto_setup(__file__) 6 7 8 def clear_wechat(poco):#清除微信的聊天記錄 9 start_app("com.tencent.mm")#啟動微信 10 sleep(12)#等待12秒 11 poco1(text="三星").click()#點擊好友“三星”的聊天 12 poco1("android.support.v7.widget.LinearLayoutCompat").click()#點擊更多 13 poco1(text="清空聊天記錄").click()#點擊清空聊天記錄 14 poco1(text="清空").click()#點擊清空 15 stop_app("com.tencent.mm")#關閉微信
6.引用其他air文件的方法:
如果有很多重復的操作,可以將這些重復的操作寫到一個公用的air文件里面,然后再在用例里面引用這個公用的air文件的方法就可以:
舉例,有一個名叫gongyou.air的文件,里面有一個clear_wechat的方法,這個clear_wechat方法就是一個清除微信聊天記錄的用例,如果需要在用例中用到這個clear_wechat,就需要在用例中引用這個文件,然后倒入這個引用文件中的clear_wechat方法,如下:
1 # -*- encoding=utf8 -*- 2 __author__ = "xhong" 3 4 from airtest.core.api import * 5 from poco.drivers.android.uiautomation import AndroidUiautomationPoco 6 from poco.exceptions import PocoNoSuchNodeException 7 from poco.exceptions import PocoTargetTimeout 8 ST.PROJECT_ROOT = "D:\code\AirtestCase"#引用公用air的路徑 9 using("gongyou.air") 10 from gongyou import clear_wechat
7.IDE的使用
IDE的設置和使用官網有具體的說明:http://airtest.netease.com/docs/cn/7_settings/1_ide_settings.html#editor
7.1、新建腳本
點擊腳本窗口右側的“+”號,會新建腳本,新建的腳本默認會生成下面的代碼;如下:
7.2 Airtest輔助窗的使用
需要圖像識別的使用的是Airtest輔助窗;
7.3 poco輔助窗的使用:
符合下列框架的APP的UI定位使用的是POCO輔助窗;
已安卓原生應用舉例:
選擇Android原生應用之后,會提示導入相關的庫,選擇yes就好;
7.4、執行腳本與查看報告
執行單個腳本,在airtest中執行就可以,如下:
7.5 執行多個腳本,需要在python中跑代碼
多個腳本批量執行,在Airtest IDE中無法實現,需要單獨寫一個框架,並使用python寫一個執行入口文件myrunner.py;
多個腳本串行執行腳本請參考:https://blog.csdn.net/u010127154/article/details/83375659
執行myrunner.py文件時,需要更改自己的AllCase路徑和自己手機的設備號:
說明: 1.所有的需要執行的case寫好之后都放在AllCase文件夾里面;
2.執行時只需要執行myrunner.py文件就可以了。
3.批量執行的報告會匯總到/Users/xhong/Documents/UI/AirtestCase/AllCase/summary.html文件里面,所有case執行完成之后,打開semmary.html文件可以看到匯總頁面,點擊每一個case名稱可以查看具體的測試報告的內容;
7.6 需要注意的問題:
airtest 測試需要注意的問題:
1、在使用Airtest過程中,遇到的錯誤,請先到官網http://airtest.netease.com/docs/cn/9_faq.html,查找相應問題的解決方法,這個很重要,可以節省很多時間;
2.查看批量腳本的執行報告時,不要再IDE里面查看,直接打開文件就可以;
3.圖像識別時,要截取高分辨率的手機來適配低分辨率的手機;
4.最好使用華為或是三星的手機,其他的手機啟動pocoserver時可能會失敗,導致腳本執行失敗;
參考:https://blog.csdn.net/u010127154/article/details/83375659