成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

[1054]Airtest的探索使用

AndroidTraveler / 3572人閱讀

摘要:的框架是網(wǎng)易團(tuán)隊(duì)自己開發(fā)的一個(gè)圖像識(shí)別框架,這個(gè)框架的祖宗就是一種新穎的圖形腳本語言。基本操作方法除了跨平臺(tái)的還有平臺(tái)特定的,比如安卓平臺(tái)蘋果平臺(tái)平臺(tái)這里我們來詳細(xì)說說這些模塊。

Airtest的簡介

Airtest是網(wǎng)易出品的一款基于圖像識(shí)別和poco控件識(shí)別的一款UI自動(dòng)化測試工具。Airtest的框架是網(wǎng)易團(tuán)隊(duì)自己開發(fā)的一個(gè)圖像識(shí)別框架,這個(gè)框架的祖宗就是一種新穎的圖形腳本語言Sikuli。Sikuli這個(gè)框架的原理是這樣的,計(jì)算機(jī)用戶不需要一行行的去寫代碼,而是用屏幕截屏的方式,用截出來的圖形擺列組合成神器的程序,這是Airtest的一部分。

另外,Airtest也基于poco這個(gè)U控件搜索框架,這個(gè)框架也是網(wǎng)易自家的跨平臺(tái)U測試框架,原理類似于appium,通過控件的名稱,id之類的來定位目標(biāo)控件,然后調(diào)用函數(shù)方法,例如click(),swip()之類的方法來對(duì)目標(biāo)控件進(jìn)行點(diǎn)擊或者是操作。

關(guān)于自動(dòng)化測試

概念:自動(dòng)化測試,就是把繁雜的人工測試用例利用自動(dòng)化測試工具編寫成代碼,讓機(jī)器代替人工自動(dòng)跑用例的過程。實(shí)際上就是把以人為驅(qū)動(dòng)的測試行為轉(zhuǎn)化為機(jī)器執(zhí)行的一種過程。

意義:節(jié)省人力、物力、時(shí)間、硬件資源等,提升測試效率,特別對(duì)于繁瑣重復(fù)的測試用例,可以使測試人員更專注于新的測試模塊的建立和開發(fā),從而提高測試覆蓋率。

市面上常見的UI自動(dòng)化測試工具以及優(yōu)缺點(diǎn)

以上主流工具的優(yōu)點(diǎn)跟缺點(diǎn):

相較于以上工具來說,Airtest有以下優(yōu)點(diǎn)和缺點(diǎn):

所以其實(shí)基于圖像識(shí)別的Airtest更適合用于游戲測試多一點(diǎn)。

環(huán)境的搭建

1、AirtestIDE的下載
AirtestIDE已經(jīng)幫你集成了所有的環(huán)境,自帶錄制腳本欄,自動(dòng)生成腳本,自帶編輯器還自帶模擬器,有了一個(gè)AirtestIDE就可以輕松簡單的錄制腳本了。下載地址是Airtest的官網(wǎng):

http://airtest.netease.com/

AirtestIDE的使用教程跟文檔也在下面的連接中:

https://airtest.doc.io.netease.com/

Android真機(jī)連接

使用AirtestIDE對(duì)Android應(yīng)用進(jìn)行自動(dòng)化測試時(shí),第一步就需要連接Android設(shè)備。

Android真機(jī)連接準(zhǔn)備:

  • 請(qǐng)先安裝手機(jī)對(duì)應(yīng)品牌的官方驅(qū)動(dòng),確保能使用電腦對(duì)手機(jī)進(jìn)行USB調(diào)試
  • 確保已經(jīng)打開了手機(jī)中的”開發(fā)者選項(xiàng)”,并且打開”開發(fā)者選項(xiàng)”內(nèi)的”允許USB調(diào)試”
  • 部分手機(jī)需要打開”允許模擬位置”、”允許通過USB安裝應(yīng)用”
  • 關(guān)閉電腦上已經(jīng)安裝的手機(jī)助手軟件,能避免絕大多數(shù)問題,請(qǐng)務(wù)必在任務(wù)管理器中手工結(jié)束手機(jī)助手進(jìn)程

Android真機(jī)USB連接

  • 請(qǐng)使用USB線連接手機(jī),手機(jī)上出現(xiàn)的 允許USB調(diào)試 彈窗點(diǎn)擊 確定,
  • 點(diǎn)擊連接面板中的 refresh ADB 按鈕,設(shè)備列表將會(huì)刷新,
  • 點(diǎn)擊列表內(nèi)對(duì)應(yīng)設(shè)備的 Connect 完成連接,
  • 若設(shè)備未刷出,點(diǎn)擊 refresh ADB 按鈕。

如果遇到連接問題,請(qǐng)查閱Android連接常見問題:https://airtest.doc.io.netease.com/IDEdocs/faq/1_common%20problems/

手機(jī)連上Airtest之后,會(huì)向手機(jī)中安裝2個(gè)app,如下:

pocoservice是支撐poco操作的app,yosemite是airtest的輸入法,安裝之后,手機(jī)的默認(rèn)輸入法會(huì)變成這個(gè)輸入法,如果需要改回來原來的輸入法,需要手動(dòng)到手機(jī)設(shè)置里面進(jìn)行修改;

遠(yuǎn)程連接

  • 已知IP和端口的遠(yuǎn)程設(shè)備 ip:port ,AirtestIDE可以直接連接,
  • 點(diǎn)開設(shè)備窗內(nèi)的 遠(yuǎn)程設(shè)備連接 按鈕
  • 將 adb connect ip:port 字段填入填充框內(nèi),點(diǎn)擊 連接 按鈕,
  • 遠(yuǎn)程設(shè)備將出現(xiàn)在設(shè)備列表中,點(diǎn)擊 connect 按鈕。

無線連接

參考:使用adb無線連接手機(jī)

當(dāng)手機(jī)與電腦處在同一個(gè)wifi下,即可嘗試無線連接手機(jī)了,但是這種方式受限于網(wǎng)絡(luò)連接的穩(wěn)定性,可能會(huì)出現(xiàn)連接不夠穩(wěn)定的情況。具體連接操作步驟如下:

  • 確保手機(jī)開啟了USB調(diào)試選項(xiàng),并先用USB線將手機(jī)和電腦連接起來
  • 在電腦端執(zhí)行命令 adb tcpip 5555 ,其中 5555 是端口號(hào),可以根據(jù)自己的需求來指定,5555是默認(rèn)值
  • 獲取手機(jī)的IP地址,可以在 手機(jī)設(shè)置-關(guān)于手機(jī)-狀態(tài)信息-IP地址 里找到,也可以執(zhí)行 adb ifconfig 來查看
  • 隨后可以拔掉USB線,在AirtestIDE的 遠(yuǎn)程設(shè)備連接 處輸入 adb connect 手機(jī)ip:剛才填入的端口號(hào)5555 ,點(diǎn)擊連接,刷新ADB后就能在設(shè)備列表中看到連上的設(shè)備了
  • 如果因?yàn)榫W(wǎng)絡(luò)波動(dòng)、重啟ADB等原因?qū)е逻B接斷開,重新執(zhí)行一次 adb connect ip:port 即可。

錄制

點(diǎn)擊錄制按鈕,選擇事件進(jìn)行錄制,可以用鼠標(biāo)操作

介紹一下錄制時(shí)每一個(gè)參數(shù)的作用

  • touch(): 點(diǎn)擊操作,根據(jù)錄制腳本時(shí)所截取的圖像進(jìn)行點(diǎn)擊
  • wait(): 可以等待畫面中某個(gè)圖片出現(xiàn),如果在指定的時(shí)間范圍內(nèi)匹配到了該圖片,就會(huì)返回圖片所處位置的焦點(diǎn),否則拋出TargetNotFoundError異常
  • swipe():可以從一個(gè)位置滑動(dòng)到另外一個(gè)位置
  • exists():判斷畫面中是否存在某個(gè)圖片,如果匹配到圖片,返回圖片所處位置的焦點(diǎn),否則返回False
  • text():輸入文本
  • sleep():線程掛起
  • assert_exists():斷言圖片存在于當(dāng)前畫面上
  • assert_not_exists():斷言圖片不存在
  • assert_equal():斷言數(shù)值相等
  • assert_not_equal():斷言數(shù)值不等
  • assert_exists()與assert_equal()的區(qū)別在于,assert_exists斷言的對(duì)象是圖片,assert_equal斷言的對(duì)象是數(shù)值

可以按照需要的參數(shù)進(jìn)行配置

一個(gè)簡單的.air 腳本解析

什么是.air 腳本

在下載解壓 Airtest 腳本的專屬 IDE——AirtestIDE 后,點(diǎn)擊 “新建腳本” 按鈕,默認(rèn)即可創(chuàng)建一個(gè)后綴名為.air的腳本文件,.air這是 Airtest 腳本的專屬后綴。

讓我們打開剛才新建腳本的文件夾,可以看到實(shí)際上.air腳本文件是一個(gè)普通的文件夾,里面附帶了一個(gè)同名的.py文件,AirtestIDE 在執(zhí)行腳本時(shí),實(shí)際上執(zhí)行的是里面的.py文件。也就是說,Airtest 腳本雖然自帶一個(gè)后綴名,然而本質(zhì)上依然是 Python 腳本,遵循的是 Python 語法,我們可以根據(jù)實(shí)際需要自由地import其他 Python 第三方庫。

值得注意的是,.air文件夾中必須要有同名的.py文件,否則在命令行執(zhí)行airtest run test.air 這樣的運(yùn)行指令時(shí)會(huì)導(dǎo)致失敗。

初始化環(huán)境

首先,就像一個(gè)普通的 Python 腳本一樣,我們需要在代碼文件的最開頭部分,寫上from airtest.core.api import *,將 Airtest 的主要 API 都 import 進(jìn)來,以便在后續(xù)腳本中使用這些 API。

auto_setup?是一個(gè)用來初始化環(huán)境的接口,接口文檔在這里,它接受 4 個(gè)參數(shù),我們可以設(shè)置當(dāng)前腳本所在的路徑、指定運(yùn)行腳本的設(shè)備、設(shè)置默認(rèn)的 log 路徑和設(shè)置腳本父路徑。

  • 如果auto_setup不傳入任何參數(shù)的話,Airtest 將會(huì)讀取運(yùn)行時(shí)命令行中傳入的各項(xiàng)參數(shù),來對(duì)環(huán)境進(jìn)行初始化。
  • 在 AirtestIDE 創(chuàng)建腳本時(shí),默認(rèn)生成的代碼里是最簡單的初始化代碼auto_setup(__file__),意思是將腳本文件作為腳本路徑傳入,其他參數(shù)內(nèi)容將默認(rèn)讀取運(yùn)行命令行傳入的參數(shù)。

腳本運(yùn)行命令行有兩種形式,命令行中的參數(shù)包含device、log等:

  • 命令行運(yùn)行 Airtest 腳本的示例:>airtest run untitled.air --device Android:///手機(jī)設(shè)備號(hào) --log log/。
    更多使用命令行運(yùn)行腳本信息,請(qǐng)參考文檔
  • 在使用 AirtestIDE 運(yùn)行腳本時(shí),會(huì)在 “Log 查看窗” 中自動(dòng)生成一個(gè)可用的命令行,可以供大家作為參考。
    "D:/AirtestIDE-path/AirtestIDE" runner "D:/script-path/untitled.air" --device Android://127.0.0.1:5037/5PZTQWQOGES8RWUG --log "C:/Users/username/AppData/Local/Temp/AirtestIDE/scripts/aa8c71acdfa70c3068b862cb42ffb8dc"

設(shè)備連接

  • 在運(yùn)行時(shí)的命令行中如果傳入了類似--device Android:///這樣的設(shè)備參數(shù),那么腳本在初始化時(shí)會(huì)自動(dòng)連上對(duì)應(yīng)的設(shè)備,不需要再另外寫代碼連接了。
  • 如果沒有在初始化時(shí)連上設(shè)備,可以在腳本代碼中使用connect_device接口來連接設(shè)備。
  • Airtest 支持在一個(gè)腳本里同時(shí)連接多個(gè)設(shè)備,使用set_current接口可以在多個(gè)設(shè)備中進(jìn)行切換,device()接口可以獲取到當(dāng)前使用中的設(shè)備。

模擬點(diǎn)擊

Airtest 作為自動(dòng)化測試框架,模擬的是人的操作,常見接口主要有:

  • touch?點(diǎn)擊某個(gè)位置,可以設(shè)定被點(diǎn)擊的位置、次數(shù)、按住時(shí)長等參數(shù)
  • swipe?從一個(gè)位置滑動(dòng)到另外一個(gè)位置
  • text?調(diào)用輸入法輸入指定內(nèi)容
  • keyevent?輸入某個(gè)按鍵響應(yīng),例如回車鍵、刪除鍵
  • wait?等待某個(gè)指定的圖片元素出現(xiàn)
  • snapshot?對(duì)當(dāng)前畫面截一張圖
  • 其他

核心 API 請(qǐng)參見這個(gè)文檔,在這個(gè)文檔頁里出現(xiàn)的 API 都是跨平臺(tái) API,由于我們?cè)诖a的第一行里將airtest.core.api里的接口全部import進(jìn)來了,因此這些 API 可以在代碼里直接進(jìn)行調(diào)用,像這樣:

from airtest.core.api import *touch((x, y))

在很多接口中,支持傳入Template圖片對(duì)象作為參數(shù),在運(yùn)行時(shí)將會(huì)去點(diǎn)擊圖片在畫面中的所在位置,類似這樣:

# 等價(jià)于 touch((x, y)), (x, y)是圖片所在的中心點(diǎn)touch(Template(r"tpl1556019871196.png", record_pos=(0.204, -0.153), resolution=(1280, 720)))

其中,Template對(duì)象是一個(gè)圖片類,Airtest 會(huì)先嘗試在當(dāng)前畫面中尋找能夠匹配這張圖片的位置,如果找到了,將對(duì)這個(gè)坐標(biāo)進(jìn)行點(diǎn)擊操作,如果找不到,將拋出識(shí)別異常。我們將在后文對(duì)Template圖片類進(jìn)行更加詳細(xì)的介紹。

安裝包

1)使用 pip 安裝Airtest框架 pip install airtest

2)若運(yùn)行代碼時(shí),在cv2模塊報(bào) ImportError: DLL load failed: 找不到指定模塊 的錯(cuò),如果使用的python版本低于3.7,請(qǐng)直接運(yùn)行:

pip uninstall opencv-contrib-python# 若以下安裝語句運(yùn)行失敗,可以嘗試更新pip到最新版本后重試pip install opencv-contrib-python==3.2.0.7

3)Poco安裝

使用 pip 安裝poco框架 pip install pocoui,請(qǐng)注意庫的名稱為 pocoui,不要填錯(cuò)。

Airtest基本操作方法

除了跨平臺(tái)的API還有平臺(tái)特定的API,比如:

airtest.core.android #安卓平臺(tái)airtest.core.ios   #蘋果平臺(tái)airtest.core.win   #Windows平臺(tái)

這里我們來詳細(xì)說說這些模塊。

跨平臺(tái)API模塊

這里我們要介紹的第一個(gè)就是跨平臺(tái)模塊:

from airtest.core.api import * #導(dǎo)入所有方法

1).初始化設(shè)備

這里初始化設(shè)備我們也有兩種方案,下面請(qǐng)看:

根據(jù)設(shè)備的UUID來初始化

語法格式:

init_device(platform="Android",uuid="",cap_method=JAVACAP for Android)#平臺(tái) – Android,IOS或Windows#uuid –目標(biāo)設(shè)備的uuid,例如,用于Android的serialno,用于Windows的handle,用于iOS的uuid#kwargs –可選的平臺(tái)特定關(guān)鍵字args,例如cap_method = JAVACAP for Android

下面我們來列舉一下實(shí)例,如下:

init_device(platform="Android",uuid="127.0.0.1:62001",cap_method="JAVACAP")

根據(jù)設(shè)備的URL來初始化

語法格式如下:

android:///   連接當(dāng)前安卓設(shè)備android://adbhost:adbport/serial NO.?cap_method=javacap&touch_method=adbwindows:///    連接本地桌面程序ios:///     連接IOS設(shè)備

這里我們主要是傳入了ADB地址,端口和連接的夜神模擬器的序列號(hào)而連接上的。具體例子如下:

connect_device("android://127.0.0.1:5037/127.0.0.1:62001?cap_method=javacap&touch_method=adb")

2).返回當(dāng)前活動(dòng)設(shè)備

device()

3).設(shè)置當(dāng)前活動(dòng)設(shè)備

有時(shí)候如果我們連接了多個(gè)設(shè)備,我們需要切換的話,就是用這個(gè)函數(shù)來達(dá)到目的,可以使用設(shè)備的索引或者設(shè)備的序列號(hào)來進(jìn)行切換哦。

set_current(0)set_current("127.0.0.1:62001")

4).運(yùn)行環(huán)境配置

auto_setup(basedir = None,devices = None,logdir = None,project_root = None,compress = 0 )basedir 設(shè)置當(dāng)前腳本的所在位置,__file__也可以。devices 指定運(yùn)行腳本的設(shè)備以列表形式存在logdir 設(shè)置腳本運(yùn)行時(shí)的日志保存路徑,默認(rèn)為None,設(shè)為True可保存project_root  設(shè)置api的項(xiàng)目根目錄

5).開啟并執(zhí)行遠(yuǎn)程Shell命令

shell(cmd) #ls / data / local / tmp

6).在設(shè)備上啟動(dòng)程序

start_app("啟動(dòng)的應(yīng)用程序包名")

7).在設(shè)備上停止程序

stop_app("啟動(dòng)的應(yīng)用程序包名")

8).清除設(shè)備上的應(yīng)用程序數(shù)據(jù)

clear_app("啟動(dòng)的應(yīng)用程序包名")

9).在設(shè)備上安裝應(yīng)用程序

install(filepath="要在目標(biāo)設(shè)備上安裝的文件的路徑")

10).在設(shè)備上卸載應(yīng)用程序

uninstall("應(yīng)用程序包名")

11).截圖并保存到文件中

snapshot(filename="1.jpg",msg="hello",quality=3)filename:圖片名msg:屏幕截圖的簡短描述quality:圖像質(zhì)量,范圍為[1,99]的整數(shù)

12).喚醒并解鎖設(shè)備

wake("設(shè)備")

13).返回目標(biāo)設(shè)備的主屏幕

home("設(shè)備")

14).設(shè)備屏幕上執(zhí)行點(diǎn)擊,滑動(dòng),捏,按鍵,輸入操作

click(v=Template(x,y),times=2) #單擊v:觸摸目標(biāo),可以是Template實(shí)例,也可以是絕對(duì)坐標(biāo)(x,y)times:執(zhí)行多少次觸摸double_click() #雙擊swipe(v1,v2)#滑動(dòng)起點(diǎn)和終點(diǎn)swipe(v1,vector=(x,y))#沿向量移動(dòng),向量可以是坐標(biāo)也可以是屏幕百分比#返回值:原點(diǎn)位置和目標(biāo)位置pinch()#捏操作,相當(dāng)于縮放,參數(shù)如下:in_or_out:放大或縮小center:默認(rèn)為None表示屏幕中心percent:捏動(dòng)作的屏幕比例,默認(rèn)值為0.5 keyevent(keyname="Home")#按鍵操作text("文本")#在設(shè)備上輸入文本

15).睡眠,等待

sleep(2)#睡眠兩秒,延遲兩秒wait(v,timeout,interval,intervalfunc)#等待與設(shè)備屏幕上的模板匹配v:等待的目標(biāo)對(duì)象timeout:超時(shí)時(shí)間interval:嘗試找到匹配項(xiàng)的時(shí)間間隔(秒)intervalfunc:在每次未成功嘗試找到相應(yīng)匹配項(xiàng)后調(diào)用返回值:匹配目標(biāo)的坐標(biāo)

16).檢查給定目標(biāo)在設(shè)備屏幕上是否存在

exists(v)v:檢查對(duì)象如果找不到目標(biāo),則為False,否則返回目標(biāo)的坐標(biāo)

17).在設(shè)備屏幕上查找所有出現(xiàn)的目標(biāo)并返回其坐標(biāo)

find_all(v)v:尋找目標(biāo)返回坐標(biāo)列表

18).斷言操作

assert_exists(v,msg) #斷言目標(biāo)存在于設(shè)備屏幕上assert_not_exists(v,msg) #斷言目標(biāo)在設(shè)備屏幕上不存在v:要檢查的目標(biāo)msg:斷言的簡短描述assert_equal(v1,v2,msg) #斷言兩個(gè)值相等assert_not_equal(v1,v2,msg) #斷言兩個(gè)值不相等v1:第一個(gè)值v2:第二個(gè)值msg:斷言的簡短描述

這里基本上我們就把使用方法說完了,下面我們來進(jìn)行下實(shí)際操作,下一篇文章即將奉上。

  • 使用
from airtest.core.api import *# 通過ADB連接本地Android設(shè)備connect_device("Android:///")#安裝待測軟件apk,路徑信息。install("path/to/your/apk")#開始運(yùn)行appstart_app("com.pingan.certicationApp")#點(diǎn)擊某個(gè)圖片,Airtest中基于圖像識(shí)別語法,圖片自己提供。touch(Template("image_of_a_button.png"))#滑動(dòng)語音,開頭圖片跟結(jié)尾圖片swipe(Template("slide_start.png"), Template("slide_end.png"))#添加斷言的圖片assert_exists(Template("success.png"))#點(diǎn)擊Android上的返回鍵#keyevent("BACK")#點(diǎn)擊Android上的Home鍵返回#home()#uninstall("package_name_of_your_apk")
  • poco樣例
# -*- encoding=utf8 -*-__author__ = "enmonster"from airtest.core.api import *auto_setup(__file__)from poco.drivers.android.uiautomation import AndroidUiautomationPocopoco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)poco("com.miui.home:id/workspace").offspring("計(jì)算器").offspring("com.miui.home:id/icon_icon").click()poco("com.miui.calculator:id/btn_c_s").click()poco("com.miui.calculator:id/digit_7").click()poco("com.miui.calculator:id/op_add").click()poco("com.miui.calculator:id/digit_5").click()poco("com.miui.calculator:id/btn_equal_s").click()

poco輔助窗
poco是通過元素本身的屬性來定位元素,常用的API如下:
attr(‘type’):提取指定元素屬性為type的值
get_text(): 提取指定元素的文本內(nèi)容
attr(‘text’): 通過給定的屬性名檢索ui元素的屬性。如果屬性不存在,則返回none(屬性有visible、text、type、pos、size、name等)
exists():判斷指定元素是否在當(dāng)前屏幕上存在,存在true、不存在false
click(): 點(diǎn)擊事件,可使用click(center)、click([0.5,0.5])、focus([0.5,0.5]).click()來點(diǎn)擊控件中心位置
rclick():右鍵點(diǎn)擊
double_click():雙擊操作
long_click():長按操作
swipe:滑動(dòng)事件,如:swipe([0.2, -0.2], duration=1)以45度角滑動(dòng),持續(xù)1秒鐘
drag:拖拽事件,如:poco(text=‘需要拖動(dòng)位置’).drag_to(poco(text=‘目標(biāo)位置’))
focus (local positioning):局部定位,如:poco(‘控件地址’).focus(‘center’).click()點(diǎn)擊控件中間位置
wait:等待事件,如:poco(‘控件地址’).wait(2).click() 控件出現(xiàn)就點(diǎn)擊,最多等待2秒

多個(gè)手機(jī)交互

如果case中涉及到兩個(gè)手機(jī)交互的,可以在.py文件中連接多個(gè)手機(jī),需要在哪個(gè)手機(jī)上操作,就需要在腳本中使用set_cerrent()借口來切換到相應(yīng)的手機(jī)上;

device1 = "c17a4cb4" #設(shè)備1device2 = "RKK0217C15003363" #設(shè)備2dev1 = connect_device("android://127.0.0.1:5037/"+device1)#連接設(shè)備1dev2 = connect_device("android://127.0.0.1:5037/"+device2)#連接設(shè)備2poco1 = AndroidUiautomationPoco(dev1) #初始化設(shè)備1poco2 = AndroidUiautomationPoco(dev2) #初始化設(shè)備2set_current(device1)#切換到手機(jī)1set_current(device2)切換到手機(jī)2

case舉例

初始化設(shè)備之后就可以進(jìn)行相關(guān)設(shè)備的poco操作了,舉個(gè)例子:

這個(gè)例子是打開微信,點(diǎn)擊聊天信息中的一個(gè)好友,然后清除好友聊天的例子;

from poco.drivers.android.uiautomation import AndroidUiautomationPocodevice1 = "c17a4cb4" #設(shè)備號(hào)dev1 = connect_device("android://127.0.0.1:5037/"+device1)#連接師傅手機(jī)poco1 = AndroidUiautomationPoco(dev1) #實(shí)例化手機(jī)auto_setup(__file__)  def clear_wechat(poco):#清除微信的聊天記錄     start_app("com.tencent.mm")#啟動(dòng)微信     sleep(12)#等待12秒     poco1(text="三星").click()#點(diǎn)擊好友“三星”的聊天     poco1("android.support.v7.widget.LinearLayoutCompat").click()#點(diǎn)擊更多     poco1(text="清空聊天記錄").click()#點(diǎn)擊清空聊天記錄     poco1(text="清空").click()#點(diǎn)擊清空     stop_app("com.tencent.mm")#關(guān)閉微信

引用其他air文件的方法

如果有很多重復(fù)的操作,可以將這些重復(fù)的操作寫到一個(gè)公用的air文件里面,然后再在用例里面引用這個(gè)公用的air文件的方法就可以:

舉例,有一個(gè)名叫g(shù)ongyou.air的文件,里面有一個(gè)clear_wechat的方法,這個(gè)clear_wechat方法就是一個(gè)清除微信聊天記錄的用例,如果需要在用例中用到這個(gè)clear_wechat,就需要在用例中引用這個(gè)文件,然后倒入這個(gè)引用文件中的clear_wechat方法,如下:

# -*- encoding=utf8 -*-__author__ = "xhong"from airtest.core.api import *from poco.drivers.android.uiautomation import AndroidUiautomationPocofrom poco.exceptions import PocoNoSuchNodeExceptionfrom poco.exceptions import PocoTargetTimeoutST.PROJECT_ROOT = "D:/code/AirtestCase"#引用公用air的路徑using("gongyou.air")from gongyou import clear_wechat

參考:https://www.jianshu.com/p/32d08455e86f
https://blog.csdn.net/sunxitao970324/article/details/105731046
http://testerhome.com/topics/20704
https://cloud.tencent.com/developer/article/1819833
https://zhuanlan.zhihu.com/p/165527546
https://blog.csdn.net/chqj_163/article/details/109242399

AirtestIDE連接安卓真機(jī)及常見問題:
https://www.cnblogs.com/songzhenhua/p/14716116.html
airtest連接設(shè)備黑屏或者運(yùn)行報(bào)錯(cuò)minicap超時(shí)問題:
https://blog.csdn.net/qq_32394351/article/details/112512540

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/122497.html

相關(guān)文章

  • Python自動(dòng)搶紅包,超詳細(xì)教程,再也不會(huì)錯(cuò)過微信紅包了!

    摘要:首先要打開微信,進(jìn)入到指定的群聊,識(shí)別微信紅包執(zhí)行搶紅包的動(dòng)作。是一款基于控件識(shí)別的自動(dòng)化測試框架,目前支持原生原生微信小程序,也可以在其他引擎中自行接入來使用。 showImg(https://segmentfault.com/img/remote/1460000019438856); 目錄:0 引言1 環(huán)境2 需求分析3 前置準(zhǔn)備4 搶紅包流程回顧5 代碼梳理6 后記 0 引言 提...

    CoderBear 評(píng)論0 收藏0
  • 全面超越Appium,使用Airtest超快速開發(fā)App爬蟲

    摘要:代碼運(yùn)行完成以后,微信被打開了。能不能像前面打開知乎一樣,使用這個(gè)屬性呢也行,也不行。滑動(dòng)屏幕使用的命令為,滑動(dòng)屏幕需要使用坐標(biāo)信息。單獨(dú)使用控制手機(jī)在 想開發(fā)網(wǎng)頁爬蟲,發(fā)現(xiàn)被反爬了?想對(duì) App 抓包,發(fā)現(xiàn)數(shù)據(jù)被加密了?不要擔(dān)心,使用 Airtest 開發(fā) App 爬蟲,只要人眼能看到,你就能抓到,最快只需要2分鐘,兼容 Unity3D、Cocos2dx-*、Android 原生 A...

    noONE 評(píng)論0 收藏0
  • 超全App 測試工具大全,收藏這篇就夠了【附帶官網(wǎng)|GitHub地址】

    摘要:三性能測試工具官網(wǎng)介紹騰訊開源的的隨身調(diào)測平臺(tái),支持和。官網(wǎng)介紹騰訊游戲部門開發(fā)的移動(dòng)全平臺(tái)性能測試分析工具平臺(tái)。百度的服務(wù)目前主要為收費(fèi)服務(wù)。 隨著移動(dòng)互聯(lián)網(wǎng)的高速發(fā)展,App 應(yīng)用非?;?,測試工程師也會(huì)接觸到各種 app 應(yīng)用。除了人工測試之外,也可以通過一些測試工具來提高我們的測試效率...

    MRZYD 評(píng)論0 收藏0
  • 軟件測試就是簡單點(diǎn)點(diǎn)點(diǎn)嗎???

    摘要:為什么說軟件測試絕不是一件容易的事從以下幾個(gè)方面分析。要學(xué)習(xí)的軟件測試基礎(chǔ)理論多,必須要打好扎實(shí)的理論基礎(chǔ)。 為什么說軟件測試絕不是一件容易的事?從以下幾個(gè)方面分析...

    mumumu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

AndroidTraveler

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<