Airtest API精講之touch()
以下基於
python3.8;airtestIDE1.2.11;airtest1.2.2;pocoui1.0.83
首先明確一點,我們今天要講的是Airtest框架的touch(),不是Poco框架的,一般我們說Airtest,其實應該指的是Airtest Project,具體這些概念的關係是什麼,可以看之前文章:Airtest Project——UI自動化利器介紹
touch()的文件之前在Airtest核心API彙總已經寫過,這裡再複製一遍。
touch(v, times=1, **kwargs)
在當前裝置上進行點選
引數:
v – 點選位置,可以是一個 Template 圖片例項,或是一個絕對座標 (x, y)
times – 點選次數
kwargs – 平臺相關的引數 kwargs,請參考對應的平臺介面文件
返回:
實際點選位置座標 (x, y)
支援平臺:
Android, Windows, iOS
在講實際用法前,我們先來看下touch()的原始碼:
1#檔案位置:your_python_path/site-packages/airtest/core/api.py
2deftouch(v,times=1,**kwargs):
3ifisinstance(v,Template):
4pos=loop_find(v,timeout=ST.FIND_TIMEOUT)
5else:
6try_log_screen()
7pos=v
8for_inrange(times):
9G.DEVICE.touch(pos,**kwargs)
10time.sleep(0.05)
11delay_after_operation()
12returnpos
13
14click=touch#clickisaliasoftouch
touch支援點選座標或圖片,所以第一個引數v既可以是一個Template圖片例項,也可以是一個絕對座標(x, y)。
-
傳入圖片的情況,如果你是使用的AirtestIDE,只需簡單操作,IDE會自動幫你生成Template例項程式碼。(touch在AirtestIDE中的用法可以看AirtestIDE基本功能(一))這裡再強調一下,如果嵌入Windows應用,框選後還要再雙擊截圖,IDE才會生成touch語句。如果你不是通過AirtestIDE自動生成程式碼,而想自己寫,或者在生成之後還想改下程式碼,可以看之前的Template文章Airtest-API精講之Template
-
如果是傳入的絕對座標,寫成tuple(x,y)或list[x,y]都可以。
第3行if isinstance(v, Template)
就是判斷這個v是不是Template,如果是圖片,則通過loop_find()找到座標並賦值給pos(loop_find的邏輯可以看之前文章Airtest原始碼分析--影象識別整體流程),如果是座標則直接賦值給pos
第8行for _ in range(times)
,迴圈time次。
第9行G.DEVICE.touch(pos, **kwargs)
,執行當前裝置的touch()方法,Android、Windows、iOS的touch內部邏輯是不一樣。
第12行,返回座標,這個主要是針對傳入圖片的情況。
第14行,把touch賦值給chick。主要是在不同軟體不同平臺上,點選有時叫touch,有時叫click,那在Airtest中還是叫touch,但你用click也行。
例項演示
點選某個圖片
1#程式碼模式
2touch(Template(r"tpl1632195655122.png",record_pos=(-0.238,-0.512),resolution=(1080,2340)))
點選某個絕對座標
1touch([150,876])
2touch((150,876))
長按3秒
duration引數是點選的時長,預設是0.01。
1#程式碼模式
2touch(Template(r"測試工程師小站.png",record_pos=(-0.238,-0.512),resolution=(1080,2340)),duration=3)
3
4touch((150,876),duration=3)
點選3次
times引數是點選次數,預設為1。
1#程式碼模式
2touch(Template(r"測試工程師小站.png",record_pos=(-0.238,-0.512),resolution=(1080,2340)),times=3)
3
4touch((150,876),times=3)
右鍵點選(Windows專有)
Windows平臺下的touch可以傳入right_click這個引數,預設值為False,如果是要滑鼠右鍵點選,給right_click賦值為True即可。
1#程式碼模式
2touch(Template(r"windows.png",record_pos=(-0.238,-0.512),resolution=(1080,2340)),right_click=True)
3
4touch((150,876),right_click=True)
---------------------------------------------------------------------------------
關注微信公眾號即可在手機上查閱,並可接收更多測試分享~