uiautomator2实战: 启动随机播放音乐,并切换到后台
首先确定环境已搭建完成,
输入adb devices, 查看设备信息
输入python -m weditor,打开Weditor定位
在弹出的网页中输入adb devices 获取到的设备信息,点击connect,若出现绿色叶子,即连接成功
点击 Reload,可看到当前网页抓取到的界面就是我们手机停留的界面
点击上面想要获取的信息框,即可抓取到对应的元素,
如:点击左上角的选项图标,右侧显示出对应的className、description、xpath、packageName等
在实现启动随机播放音乐时,需要启动apk,点击左侧选项图标,切换到歌曲,点击随机播放,以上点击我分为四个方法,再创建一个启动音乐并随机播放的方法;
具体实现如下:
既然已获取到包名,这里我们就可以先写启动apk的方法
注:uiautomator2支持使用packageName即可启用apk,但因为用的测试机音乐与视频的apk的名称都是“com.android.music”,所以这里加入了music的activiti;
获取activiti方式如下:
1 、手机进入到相关apk的界面,我这里进入到了音乐apk的界面,执行adb shell
2、 执行dumpsys activity | grep mFocusedActivity
代码如下:
import uiautomator2 as u2
# 定义一个名为Music的class类,用于存放所有Music的相关点击、组合等操作
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() # 初始化连接设备
music = Music(d) # 实例化Music类,传入设备d
music.start() # 调用start方法,启动音乐apk
以上即完成了apk的启动
启动apk已完成后,进行点击左侧选项图标,可以看到Code中包含的示范代码,直接拷贝到图中的2区域增加点击(.cliek()),点击运行,可确定是否满足期望的进行点击;
# 点击选项图标
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()
以上即将所有步骤都封装到了对应的方法中,下面新建一个随机播放音乐的方法
# 组合操作,进行后台播放音乐
def start_background_play(self):
self.start() # 启动apk
self.click_drawer() # 点击选项图标
self.click_title_drawer() # 点击歌曲
self.list_shuffle_all() # 点击随机播放
self.d.press("home") # 模拟按键操作,按home键切换到后台
以上为基本的操作,实际实战中会有更多复杂的情况,比如弹框、元素名称重复等,需要慢慢的积累。在这里就不复述了。这里只简单描述启动一个apk到封装一个操作以便调用;
完整代码如下:
import uiautomator2 as u2
# 定义一个名为Music的class类,用于存放所有Music的相关点击、组合等操作
class Music:
def __init__(self, d):
self.d = d
# 定义一个名为start的方法,用于启动apk
def start(self):
self.d.app_start("com.android.music", activity=".MusicBrowserActivity")
# 点击选项图标
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()
# 组合操作,进行后台播放音乐
def start_background_play(self):
self.start()# 启动apk
self.click_drawer()# 点击选项图标
self.click_title_drawer()# 点击歌曲
self.list_shuffle_all()# 点击随机播放
self.d.press("home")# 模拟按键操作,按home键切换到后台
d = u2.connect()# 初始化连接设备
music = Music(d)# 实例化Music类,传入设备d
music.start_background_play()# 调用start_background_play方法,启动后台音乐apk