Poco框架實操:獲取節點屬性的高效技巧(一)

此文章來源於項目官方公衆號:“AirtestProject”
版權聲明:允許轉載,但轉載必須保留原鏈接;請勿用作商業或者非法用途

一、前言

上期推文我們介紹了Poco UI樹下的節點關係,以及通過節點關係去尋找我們所需要節點的方法,那麼本週我們來分享一下,當我們尋找到所需要節點後,能獲取到什麼信息呢?又怎麼去獲取呢?

二、Poco節點的屬性操作

2.1 獲取控件文本屬性:get_text( )

在UI自動化測試中,獲取節點的文本信息是常見的需求。Poco框架提供了get_text()方法,它能夠輕鬆提取指定元素的文本內容。無論是按鈕上的提示文字,還是列表項的顯示內容,get_text()都能一一捕獲,從而實現對節點的文字內容進行操作或展示。

poco("遊戲增強器").get_text()

2.2 獲取控件名字屬性:get_name()

get_name()方法可以幫助快速獲取元素的名稱,這對於識別和操作節點控件非常重要。通過使用該方法,可以方便地獲取到節點的名稱,從而更好地進行元素的定位和後續操作。

poco("文本輸入").get_name()

2.3 獲取控件尺寸大小屬性:get_size()

瞭解節點控件的尺寸對於測試控件的佈局和設計等至關重要。get_size()方法提供了一種簡便的方式來獲取元素的寬度和高度,可以確保元素在不同設備和分辨率上的正確顯示。

poco("文本輸入").get_size()

2.4 獲取控件的頂部、右側、底部和左側的歸一化座標系:get_bounds()

get_bounds()方法返回節點元素的邊界框參數,包括元素的頂部(top)、右側(right)、底部(bottom)和左側(left)這些與標準座標系中屏幕邊緣的歸一化座標。這些信息可以用於截圖控件、點擊控件等,可以更好地規劃自身的腳本設計。

poco("文本輸入").get_bounds()

2.5 獲取控件位置大小屬性:get_position()

get_position()返回控件元素的中心座標,通常以相對座標(x,y)返回座標,通過獲取控件元素的中心座標,我們可以在需要的時候更快地定位到該位置,從而實現一些交互操作。

poco("播放").get_position()

2.6 獲取控件屬性:attr("type")

attr("type")方法可以檢索節點的特定屬性值,需要在括號內輸入所需要的屬性值(需要以字符串的形式輸入),即可查詢到所需要的屬性值。當上述查詢屬性的語句都無法查詢到自己所需要的屬性值的情況下,可以通過attr("type")去進行查詢。

poco("文字輸入").attr("text")

三、實際使用案例

結合上述所講的獲取控件方法,我們用個小小的案例去演示一下日常使用的場景。

參考代碼如下:

# -*- encoding=utf8 -*-
__author__ = "Airtest"

from airtest.core.api import *
auto_setup(__file__)


from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

#打開網易雲音樂app
start_app("com.netease.cloudmusic")
sleep(6.0)


#【使用get_text】獲取當前輸入在搜索框上的文字
tem = poco("com.netease.cloudmusic:id/searchHintText").get_text()
print("目前搜索框內的文字是:" + tem)

#【使用get_name】獲取“每日推薦”在UI樹上的節點名
name = poco(text="每日推薦").get_name()
print("該控件的name爲:" + name)

#點擊進入每日推薦界面
poco(text="每日推薦").click()

#【使用get_size】獲取在“每日推薦”界面上的廣告大小
adsize = poco("com.netease.cloudmusic:id/daily_ad_banner").get_size()
print("該廣告位的長寬大小爲:" + name)

#【使用get_bounds】獲取在“每日推薦”界面上的廣告頂部、右側、底部和左側的歸一化座標系
adbounds = poco("com.netease.cloudmusic:id/daily_ad_banner").get_bounds()
str(adbounds)
print(f"該廣告位的頂部、右側、底部和左側的歸一化座標系分別爲:{adbounds}")
sleep(1.0)

#【使用get_position】獲取在“每日推薦”界面上的廣告位置座標
adpos = poco("com.netease.cloudmusic:id/daily_ad_banner").get_position()
str(adpos)
print(f"該廣告位的位置座標爲:{adpos}" )
sleep(1.0)

#【使用attr去查詢】獲取在“每日推薦”界面上的廣告位置座標
adpos2 = poco("com.netease.cloudmusic:id/daily_ad_banner").attr("pos")
str(adpos2)
print(f"利用attr獲取的位置座標爲:{adpos2}" )
sleep(1.0)

四、小結

本週我們介紹了5種查詢Poco 節點屬性值的方式,其中包括:

1、get_text( )獲取節點的text屬性值

2、get_name( )獲取節點的name屬性值

3、get_size( )獲取節點的size屬性值

4、get_bounds( )獲取節點的頂部、右側、底部和左側的歸一化座標系

5、get_positions( )獲取節點的位置座標

6、attr("type")獲取所需要的屬性值

通過這些方法,我們能夠更深入地理解和使用Poco的UI樹節點,可以更進一步地完善自己的腳本。如果同學們在使用Poco進行自動化測試的過程中,遇到了問題,或者有任何想要深入瞭解的知識點,歡迎在官方交流羣裏告訴我們或者提交issue,也歡迎大家投稿。後續我們會帶來更多精彩的有關Poco專題內容,請大家持續關注我們,敬請期待哦!


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

官方答疑 Q 羣:526033840

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