今天用uiautomator2写UI自动化,遇到了需要注册一个watcher来处理一些弹窗的情况,百度了下用法,发现很多用法都是老的.新的watcher已经不支持如下写法了
d.watchers.watched = True
而且也不能使用诸如
d.watcher("WATCHER_NAME").when(text="确认").click(text="确认")
这种写法,新的watcher值支持xpath的了
alertlist = ['//*[@resource-id="com.spdbccc.app:id/tv_policy_agree"]',
'//*[@resource-id="com.spdbccc.app:id/myalterdilog_show_clean"]',
'//*[@resource-id="android:id/button1"]',
'//*[@resource-id="com.spdbccc.app:id/lay_skip"]/android.widget.RelativeLayout[1]']
for alert in alertlist:
device.watcher.when(xpath=alert).click()
device.watcher.start()
我自己对于APP弹窗处理的实现,记得最后要watcher.remove()掉.