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
2def touch(v, times=1, **kwargs):
3    if isinstance(v, Template):
4        pos = loop_find(v, timeout=ST.FIND_TIMEOUT)
5    else:
6        try_log_screen()
7        pos = v
8    for _ in range(times):
9        G.DEVICE.touch(pos, **kwargs)
10        time.sleep(0.05)
11    delay_after_operation()
12    return pos
13
14click = touch  # click is alias of touch

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)

 

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

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章