uiautomator2實戰(zhàn)

uiautomator2實戰(zhàn):?啟動隨機播放音樂,并切換到后臺


首先確定環(huán)境已搭建完成,

輸入adb devices, 查看設(shè)備信息


輸入python -m weditor,打開Weditor定位

在彈出的網(wǎng)頁中輸入adb devices 獲取到的設(shè)備信息,點擊connect,若出現(xiàn)綠色葉子,即連接成功


點擊 Reload,可看到當(dāng)前網(wǎng)頁抓取到的界面就是我們手機停留的界面

?.

點擊上面想要獲取的信息框,即可抓取到對應(yīng)的元素,

如:點擊左上角的選項圖標(biāo),右側(cè)顯示出對應(yīng)的className、description、xpath、packageName等



在實現(xiàn)啟動隨機播放音樂時,需要啟動apk,點擊左側(cè)選項圖標(biāo),切換到歌曲,點擊隨機播放,以上點擊我分為四個方法,再創(chuàng)建一個啟動音樂并隨機播放的方法;

具體實現(xiàn)如下:

既然已獲取到包名,這里我們就可以先寫啟動apk的方法

注:uiautomator2支持使用packageName即可啟用apk,但因為用的測試機音樂與視頻的apk的名稱都是“com.android.music”,所以這里加入了music的activiti;

獲取activiti方式如下:

1 、手機進(jìn)入到相關(guān)apk的界面,我這里進(jìn)入到了音樂apk的界面,執(zhí)行adb shell?

2、 執(zhí)行dumpsys activity | grep mFocusedActivity

可以看到 .MusicBrowserActivity就是activity?

代碼如下:

import uiautomator2 as u2

# 定義一個名為Music的class類,用于存放所有Music的相關(guān)點擊、組合等操作

class Music:

????def __init__(self, d):

????????self.d = d

# 定義一個名為start的方法,用于啟動apk

????def start(self):

????????self.d.app_start("com.android.music", activity=".MusicBrowserActivity") ??

d = u2.connect() ? ? ? ? # 初始化連接設(shè)備

music = Music(d) ? ? ? ?# 實例化Music類,傳入設(shè)備d

music.start() ? ? ? ? ? ? ? ?# 調(diào)用start方法,啟動音樂apk

以上即完成了apk的啟動

啟動apk已完成后,進(jìn)行點擊左側(cè)選項圖標(biāo),可以看到Code中包含的示范代碼,直接拷貝到圖中的2區(qū)域增加點擊(.cliek()),點擊運行,可確定是否滿足期望的進(jìn)行點擊;

# 點擊選項圖標(biāo)

def click_drawer(self):

????self.d(description=u"drawer").click()




# 點擊 歌曲 選項
def click_title_drawer(self):

????self.d(resourceId ="com.android.music:id/title", text =u"歌曲").click()



# 點擊隨機播放

def list_shuffle_all(self):

????self.d(resourceId="com.android.music:id/shuffleAll").click()????

以上即將所有步驟都封裝到了對應(yīng)的方法中,下面新建一個隨機播放音樂的方法

# 組合操作,進(jìn)行后臺播放音樂

def start_background_play(self):

????self.start() ? ?????????????????????????????????????# 啟動apk

????self.click_drawer() ? ? ? ? ? ? ? ? ? ? ? ???# 點擊選項圖標(biāo)

????self.click_title_drawer() ? ? ? ? ? ? ? ? ? # 點擊歌曲

????self.list_shuffle_all() ? ? ? ? ? ? ? ? ? ? ? ? # 點擊隨機播放

????self.d.press("home") ? ? ? ? ? ? ? ? ? ? ? ?# 模擬按鍵操作,按home鍵切換到后臺



以上為基本的操作,實際實戰(zhàn)中會有更多復(fù)雜的情況,比如彈框、元素名稱重復(fù)等,需要慢慢的積累。在這里就不復(fù)述了。這里只簡單描述啟動一個apk到封裝一個操作以便調(diào)用;

完整代碼如下:

import uiautomator2 as u2

# 定義一個名為Music的class類,用于存放所有Music的相關(guān)點擊、組合等操作

class Music:

????def __init__(self, d):

????????self.d = d

# 定義一個名為start的方法,用于啟動apk

? ? def start(self):

????????self.d.app_start("com.android.music", activity=".MusicBrowserActivity")

# 點擊選項圖標(biāo)

? ? def click_drawer(self):

????????self.d(description=u"drawer").click()

# 點擊 歌曲 選項

? ? def click_title_drawer(self):

????????self.d(resourceId="com.android.music:id/title", text=u"歌曲").click()

# 點擊隨機播放

? ? def list_shuffle_all(self):

????????self.d(resourceId="com.android.music:id/shuffleAll").click()

# 組合操作,進(jìn)行后臺播放音樂

? ? def start_background_play(self):

????????self.start()# 啟動apk

? ? ? ? self.click_drawer()# 點擊選項圖標(biāo)

? ? ? ? self.click_title_drawer()# 點擊歌曲

? ? ? ? self.list_shuffle_all()# 點擊隨機播放

? ? ? ? self.d.press("home")# 模擬按鍵操作,按home鍵切換到后臺

d = u2.connect()# 初始化連接設(shè)備

music = Music(d)# 實例化Music類,傳入設(shè)備d

music.start_background_play()# 調(diào)用start_background_play方法,啟動后臺音樂apk

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容