一、Airtest的介紹
1)Airtest的簡介
Airtest是網易出品的一款基於圖像識別和poco控件識別的一款UI自動化測試工具。
Airtest的框架是網易團隊自己開發的一個圖像識別框架,這個框架的祖宗就是一種新穎的圖形腳本語言Sikuli。
Sikuli這個框架的原理是這樣的,計算機用戶不需要一行行的去寫代碼,而是用屏幕截屏的方式,用截出來的圖形擺列組合成神器的程序,這是Airtest的一部分。
Airtest也基於poco這個U控件搜索框架,這個框架也是網易自家的跨平台U測試框架,原理類似於appium,通過控件的名稱,id之類的來定位目標控件,
然后調用函數方法,例如click(),swip()之類的方法來對目標控件進行點擊或者是操作。
2)關於自動化測試,Airtest更多的用作自動化測試
概念:自動化測試,就是把繁雜的人工測試用例利用自動化測試工具編寫成代碼,讓機器代替人工自動跑用例的過程。實際上就是把以人為驅動的測試行為轉化為機器執行的一種過程。
意義:節省人力、物力、時間、硬件資源等,提升測試效率,特別對於繁瑣重復的測試用例,可以使測試人員更專注於新的測試模塊的建立和開發,從而提高測試覆蓋率。
3)配置手機連接
[Airtest簡介] 網易出品的一個自動化測試工具 * 可以基於圖像識別來完成自動化測試 * 可以基於poco控件來完成自動化測試 [安裝] 官網下載:https://airtest.netease.com/changelog.html 解壓即用 [配置手機] 1. 打開 AirtestIDE 2. 將手機打開開發者模式 3. USB鏈接手機 4. 在右上角點擊connect 5. 出現界面即可

二、python語言操作手機
1)左下標選擇安卓,生成初始化代碼

# -*- encoding=utf8 -*- __author__ = "hp" from airtest.core.api import * auto_setup(__file__) from poco.drivers.android.uiautomation import AndroidUiautomationPoco poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)
2)打開微信
2.1)第一種方式,通過 應用名字打開
# 打開微信 poco(text='微信').click() # click 點擊事件
2.2)打開應用app的名稱
第一步獲取應用app的名稱
# 查看當前手機上的app的包,有哪些,找到需要打開的包 dev = device() print(dev.list_app(third_only=True)) # 獲取所以的應用的包名 # com.tencent.mm 為微信的包名
第二步,打開微信。如果知道了包名,第一步可省略,直接使用
# 打開app start_app('com.tencent.mm')
3)根據標簽選擇需要的信息

# 曬選對話框 items_elements = poco(name='com.tencent.mm:id/b9g').offspring(name='com.tencent.mm:id/b9i') # offspring 為子孫節點 # 選擇出所有的名字 for item in items_elements: name = item.get_text() print(name)
4)搶紅包代碼
# -*- encoding=utf8 -*- __author__ = "hp" from airtest.core.api import * auto_setup(__file__) from poco.drivers.android.uiautomation import AndroidUiautomationPoco poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False) # 打開app start_app('com.tencent.mm') # 曬選對話框 items_elements = poco(name='com.tencent.mm:id/b9g').offspring(name='com.tencent.mm:id/b9i') # offspring 為子孫節點 # 選擇出所有的名字 names = [] for item in items_elements: name = item.get_text() names.append(name) print(names) def get_red_pakets(): # 實現搶紅包,選擇歷史消息,進行反轉poco("com.tencent.mm:id/ae").child("android.widget.RelativeLayout")[5] msg_elements_list = poco(name="android.widget.RelativeLayout").children() # 獲取別人發的消息 # 反轉消息 msg_lists = [] for item in msg_elements_list: msg_lists.insert(0,item) for msg in msg_lists: # 第一次循環出來的就是最后一個元素,也是最新的元素 # 判斷紅包是否存在 red_key_element = msg.offsping(name='com.tencent.mm:id/asn') # 已領取元素定位 not_red_key = msg.offsping(name='com.tencent.mm:id/aso') if red_key_element: # 說明有紅包,別管有沒有搶過 # 判斷搶沒有搶過 if not_red_key.exists() and not_red_key.get_text() == '以領取': print('已經搶過了') continue else: print('有新紅包了') msg.click() # 點紅包 # 開紅包 kai_elements = poco(name='com.tencent.mm:id/czt') if kai_elements.exists(): kai_elements.click() # 返回對話框 keyevent('BACK') else: print('沒有紅包!') continue # 進入對話框 target = 'myfriend' if target in names: index = names.index(target) # 計算出列表的索引 items_elements[index].click() # 進入該對話框 while True: get_red_pakets() sleep(1) # 每一秒檢查一次
5)歸納總結
[Airtest簡介] 網易出品的一個自動化測試工具 * 可以基於圖像識別來完成自動化測試 * 可以基於poco控件來完成自動化測試 [安裝] 官網下載:https://airtest.netease.com/changelog.html 解壓即用 [配置手機] 1. 打開 AirtestIDE 2. 將手機打開開發者模式 3. USB鏈接手機 4. 在右上角點擊connect 5. 出現界面即可 6.自動生成代碼 在poco輔助款左下角選擇 安卓 [打開微信] 先找到包名 device() dev.list_app() 指定包名打開 start_app(包名) [選擇對話框] poco來定位元素的位置 offspring是選擇子孫節點,包括兒子,孫子,重孫子 補充 --> children 是選擇子節點,只包括兒子 get_text() 選擇節點上對應的文本 [選擇對話列表] FILO --> First In First Out LIFO --> Last In First Out Proprietary [總結] 注意空間元素的選取 children 和 offspring的使用 Airtest可以實現手機app的爬蟲 可以直接使用 Airtest運行多個手機 --> 群控 結合 MitmProxy來實現爬蟲,MitmProxy抓包工具,可以過濾請求與響應
