ATX ATX 自动化时弹窗的处理 今天比较累了,先把 iOS 写了

codeskyblue · 2017年07月31日 · 最后由 老马 回复于 2018年01月29日 · 2850 次阅读

前言

弹窗基本上都是为了请求某些权限,如流量权限,地理位置权限。做操作系统的人的出发点是好的,但是有的妨碍自动化的进行。

iOS 的弹窗处理

直接上代码吧。当弹窗出现时会自动调用 _handle_alert函数,处理完弹窗后,代码会继续向下执行。下面的代码,主要是给你一个思路,有的弹窗可能还有 3 个按钮,这些都需要你的随机应变。

参考代码

import wda
import atx

d = atx.connect("https://localhost:8100")

def _handle_alert():
    btns = d.session.alert.buttons()
    print "Alert buttons", btns
    if "Allow" in btns:
        d.session.alert.click("Allow")
    else:
        d.session.alert.accept()

wda.alert_callback = _handle_alert

# do what you want
d(text="Location").click()
# other codes.

其他的思路

  • 也有人想过在 WDA 层自动处理掉弹出 Auto accepting alerts 不过这个 issue 一直很好的处理掉,官方一直在等待着 pr。

Android 今天太累了,写不动了

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 5 条回复 时间 点赞

对于不定时弹出的弹出框怎么处理?写监听么?

回复

这篇文章就是在讲怎么处理不定时的弹窗

@codeskyblue android 系统的自动化弹窗识别 ,是用 atx 包里的方法 还是 atx-uiautomator2 包里的方法 ?

@codeskyblue https://testerhome.com/topics/11270 我看这篇文章 应该有在 atx-agent 也就是 uiautomator2 中源码 中有什么参数开启传递 自动识别并点掉弹窗吧。 我去找找看。。。。

atx.drivers.android.py.AndroidDevices(DeviceMixin) 应该是这里提供类似 wda d.session.alert.buttons() 里的方法吧 可惜没找到 alert 方法。。。。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册