Python Python3 UI 自动化通过 u2 的 d.watcher () 解决安装 apk 时的权限弹窗 (三)

xiaoxiao · October 23, 2019 · Last by 花开 replied at October 24, 2019 · 2212 hits

上篇:https://testerhome.com/topics/19579

uiautomator2 官网:https://github.com/openatx/uiautomator2
我们在 u2 官网可以看到,u2 提供了一个 d.watcher() 监听方法,可以用来解决安卓安装 apk 的权限弹窗问题,也可以点掉执行 case 时应用弹出的 alert 弹窗。下面我们封装一个 watcher() 方法,监听各种需要点掉的弹窗。

# 监听弹窗
def watcher(self, driver):
    try:
        driver.watcher("继续安装").when(text="继续安装").click(text="继续安装")
        driver.watcher("允许").when(text="允许").click(text="允许")
        driver.watcher("始终允许").when(text="始终允许").click(text="始终允许")
        driver.watcher("确定").when(text="确定").click(text="确定")
        driver.watcher("确认").when(text="确认").click(text="确认")
        driver.watchers.watched = True # 设置监听状态
    except Exception as e:
        print(e)

在执行我们的 UI 自动化 case 之前,先执行上面的监听方法,通过上面driver.watchers.watched = True这一行代码设置监听状态,它将会一直监听手机的弹窗,直到手机断开与电脑的连接。
那么实际应用应用中,我们可能需要在执行完 case 之后,就关闭掉监听,那么可以在执行 case 结束之后,将driver.watchers.watched设置为 False。我们把它封装成一个方法 stop_watcher(),在 case 之后调用即可。

# 停掉监听
def stop_watcher(self, driver):
    driver.watchers.watched = False
    print('Stop watcher finish.')
共收到 3 条回复 时间 点赞

现在建议使用 xpath.when

花开 回复

是更稳定还是效率更高呢?

效率更高吧

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up