1. 程式人生 > 其它 >Airtest API精講之touch()

Airtest API精講之touch()

上期回顧:Airtest原始碼分析--影象識別整體流程


以下基於
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)

---------------------------------------------------------------------------------

關注微信公眾號即可在手機上查閱,並可接收更多測試分享~