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

代碼如下:
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