Airtest腳本的點擊位置與點擊偏移

1. 前言

我們經常會聽同學們提到:這個圖片腳本怎麼沒有點擊效果?爲什麼腳本會點偏了?我想點圖片的其它位置可以嗎?諸如此類的問題。

今天就來跟同學們詳細聊一聊,Airtest的點擊位置與點擊偏移這塊內容,看完之後,遇到類似上面的問題,我們都可以迎刃而解啦。

2. Airtest的點擊位置

用一個最簡單的圖像點擊腳本來作爲示例:

執行這條圖像腳本,會點在哪個位置呢?熟悉Airtest的同學都會知道,是圖片的中心位置。那我們如何哪些地方知道這條腳本實際的點擊效果呢?教大家幾個小技巧。

一個是在手機的設置裏面打開“顯示觸摸操作”,這樣我們在IDE運行圖像腳本的時候,可以清楚地在手機畫面上看到點擊位置:

所以在同學們遇到,腳本執行了,但是沒有點擊效果的時候,不妨打開手機設置,啓用“顯示觸摸操作”,看下究竟是腳本執行了無響應?還是腳本真的沒有執行這個點擊動作。

另外一個方式是,在IDE的log查看窗裏,查看圖像算法給出的識別結果(找帶有關鍵詞 match resultdebug 信息):

[15:17:32][DEBUG]<airtest.core.api> match result: {'result': (439, 348), 'rectangle': ((370.76, 265.76), (370.76, 431.76), (508.76, 431.76), (508.76, 265.76)), 'confidence': 0.975566565990448, 'time': 0.3353738784790039}

可以看到,圖像算法給出的識別結果是(439, 348),我們可以藉助IDE查看移動設備座標的小工具,來檢查下這個結果是否是符合我們預期的結果:

這個方式的好處就是,有時候我們發現,腳本的實際點擊位置,偏離了我們的預期,我們就可以到log查看窗裏,找到算法識別出來的結果,用座標工具去設備畫面上覈對算法結果是否符合我們的預期,是不是真的找偏了。

還有個很直觀的方式,就是生成Airtest報告來查看,可以非常直觀的看到點擊步驟的執行情況,在畫面上的具體點擊位置等:

3. Airtest的點擊偏移

默認情況下,Airtest都是點擊圖像的中心位置的,也就是 target_pos=5 的位置。如果想要做點擊偏移,比如我就要點擊圖片的左上角位置,那就要先好好了解這個 target_pos 是個什麼參數了:

如圖所示,target_pos 用於設置在匹配結果圖像上的操作位置,取值爲1-9的整數,默認爲5(即圖像中心位置)。如果我們要點擊圖像左上角的位置,那我們必須手動指定 target_pos=1

touch(Template(r"tpl1658387780768.png", target_pos=1, record_pos=(0.108, -0.517), resolution=(720, 1440)))

圖像點擊偏移,常用於下述場景中:

一個是,當我們的頁面中,存在很多個相同的圖標,我們想指定點擊某個位置的圖標,就有可能用到 target_pos 的參數,舉個例子,在下述的頁面中,有3個相同的播放按鈕:

如果我們想點擊第一個播放按鈕,但是僅僅截圖
,是無法保證一定可以點到第一個播放按鈕的。

但是如果我們擴大截圖範圍,並且通過指定 target_pos ,就可以確保我們能點到第一個目標按鈕:

另外一個常用的場景是,當我們的點擊圖片特徵點太少時,可以適當增加截圖範圍,然後通過設置 target_pos ,來點到我們的目標位置。

假設我們想點擊上圖黃框內的button,如果我們僅僅截圖目標圖像,
可以預想的到,目標圖像底色一致,基本沒有變化,裏面也僅有簡單的線條,這樣的圖像腳本,很容易被算法判定爲特徵點過少,或者是識別到了錯誤的目標上去。

當我們擴大截圖範圍,給截圖增加更多的特徵點,並且適當地設置 target_pos ,就能得到一個兼容性效果更好的圖像腳本了:

4. 拓展:Airtest的其它點擊參數

# 點擊絕對座標
touch([100,100])

# 點擊圖片的右下角位置
touch(Template(r"tpl1606730579419.png", target_pos=9))

# 點擊2次【不一定能實現雙擊的效果】
touch([100, 100], times=2)

# 在Android和Windows下,可以設置點擊持續時間
touch([100, 100], duration=2)

# 右鍵點擊(Windows)
touch([100, 100], right_click=True)

# 雙擊
double_click([100, 100])
double_click(Template(r"tpl1606730579419.png"))

5. 小結

今天我們聊了Airtest圖像腳本的點擊位置與點擊偏移,其實,Poco控件腳本也存在類似的情況,我們下期再繼續討論。


Airtest官網https://airtest.netease.com/
Airtest教程官網https://airtest.doc.io.netease.com/
搭建企業私有云服務https://airlab.163.com/b2b

官方答疑 Q 羣:117973773

呀,這麼認真都看到這裏啦,幫忙點個推薦支持一下唄,灰常感謝~

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