Appium Appium 如何处理 toast

ming9012 · November 02, 2015 · Last by 鲁婧 replied at January 25, 2016 · 2340 hits

一直被这个头痛,因为好多提示都是toast类型。使用uiautomatorview识别不了,像一个浮层。使用hierarchyviewer识别到id之类的,但是无法处理。使用seledroid可以处理。请问下如何个用appium处理toast控件,提前多谢了
其实针对popupwindow,我也有这种疑问。

共收到 47 条回复 时间 点赞

UIAutomator模式下暂时没有很直接的办法去解决...

#1楼 @anikikun 请问下,除了seledroid,还有什么办法可以解决

#2楼 @bree uiautomator模式下暂时没了解到有什么很好的办法。

https://github.com/appium/appium/issues/4824

除了跨app, 一般不要用uiautomator, 那个没有selendroid稳定.

hierarchyviewer 能识别到的,一般都能获取

#6楼 @shixue33popupwindow可以识别,通过id识别的时候提示找不到控件,是我哪里做的不对吗?

#6楼 @shixue33 这种能处理吗?

#8楼 @bree 我错了,我本意是想讲uiautomatorViewer可以识别的,一般可以找到。。。。uiautomatorViewer是找不到popupindow和toast的,这一类寄希望于Robotium,selendroid一类的框架吧。

#9楼 @shixue33 为了你这句话,我看了半天的官网,不过还是学了不少东西,同样谢谢你

没办法,截图吧,然后用图片对比方法= =

请问一下各位,关于上图,我想点击“允许”按钮,但是“允许”按钮不属于要测试的应用,这种情况如何处理?

#12楼 @kukumao 属于popupbotton吧,可以用hierarchyviewer识别的到。换seledroid自动化引擎吧,或者直接点击坐标点可以解决。也是没有办法。我也等大神出来

我本来想将脚本上传到云测做兼容性测试,但不同手机的坐标和自带管家类应用都不同,只有通过文本识别,可又需要跨进程

我们这边uiautomator模式下检查toast都用的文字识别,当然,不是特别稳定

#14楼 @kukumao 求教下,文字识别如何做?

#15楼 @xubin98246 求教下,文字识别如何做?

#12楼 @kukumao 我今天也遇到了popup window要进行操作,实验了一下,发现发送两次KEYCODE_ENTER 就是确认操作,返回操作只需要发送一次KEYCODE_BACK就好了😁

19Floor has been deleted

@bree 不知道你用的什么语言写脚本,我们是购买了一个文字识别的商用解决方案,python中也有个pytesser模块可以直接使用

#18楼 @weamylady 我试过这种不行,因为你取不到焦点,执行KEYCODE_ENTER 就是针对当年鼠标所在的点。

#14楼 @kukumao 你开个多线程,用uiautomator去检查有没有安全警告,有就点允许,很简单的事。

#22楼 @sunrise 求教下,seledroid模式下可以处理popup window吗?

#23楼 @bree selendroid可以处理toast,popup window不确定能不能处理,一般我都是用uiautomator来处理的。

#24楼 @sunrise selendroid可以处理toast,使用的是waitforelement。但是对于固定弹出的popup window ,因为要对其上面的控件进行操作,不仅仅是确认和取消。请问下该如何处理。能讲述的清楚点吗?求教啊。我现在采用的就是坐标点封装的形式。

#25楼 @bree 不知道你说的popup window是什么样的,下面这个我亲测用uiautomator是可以的

from uiautomator import Device
d = Device("93d1243b")
el = d(text="长宁区")
el.click()

#26楼 @sunrise 不是的,这种uiautomatorViewer可以识别,所以可以直接操作。我说的是这种

#26楼 @sunrise 通过uiautomatorviewer无法识别,通过hierarchyviewer识别为

#21楼 @bree 我的是那种android页面底部弹出的一个popup window,可能跟你的类型不一样吧,可以跟开发确认下是否能让popup window监听keycode enter

#28楼 @bree 我拿这个app看了下,似乎selendroid和uiautomator都不能获取。这个控件比较特殊,弹出后周围区域还是可以点击的。


我用的是hierarchyviewer显示的Toast,这种怎么搞啊?不会用Toast Recorder录制的那种,selendroid或者文字识别都可以,求大神赐教。

@xubin98246您提到的PyTesser我找了资料说【在测试使用过程中,发觉只对英文内容识别较理想,而对中文无法处理识别!
】,还有别的工具么?

大神快快出现!我最近也遇到了这个问题,找了半天都没有找到解决方案,求问appium处理toast有没有可行的方案?

#14楼 @kukumao 朋友,你解决这问题了吗?我现在也是苦恼云测时总会卡在这

driver.findElementByXPath识别到了。。

#34楼 @snowmaster xpath能识别toast吗,怎么识别的能说下吗

#32楼 @erinys 文字识别终究是个不稳定的方案,所以现在我们改成了用一个辅助apk的方式来获取toast信息,大概原理是通过继承系统的AccessibilityService类,重写onAccessibilityEvent方法,监听Toast事件,获取文本,最后再通过socket返回脚本比较(也可以直接通过adb logcat读日志来比较),4.0以上应该都可以,供参考。

#35楼 @neyo 我是用来处理12L那种情况的,但这2天发现还是有问题。针对12L的问题,云测平台的人说他们平台有图片识别处理了,至于toast的情况就不清楚了

#37楼 @snowmaster 好的,谢谢,我也再研究下

@snowmaster 很久没来了,你是在哪个云测平台

#39楼 @kukumao 阿里云测 没用过其他平台,也不好对比

@snowmaster 也是阿里云,已经通过他们客服解决了,谢谢。

#41楼 @kukumao 你好,想问问你在使用阿里云的时候,本地通过后,然后提交云测后的日志会不会经常会出现些莫名其妙的问题
我自己折腾了几天也没有解决,已经有点不想再折腾云测了

uiautomator没有api提供toast识别功能,只能转换 webdriver使用selendroid操作,后者可以识别toast

#43楼 @turinblueice 我现在用的也是appium的selendroid模式来获取toast,但是感觉没有appium好用,可以混合使用么?

#44楼 @erinys 不能的,因为连接两个driver需要两个接口,如果混合使用,必须开两个进程,连接两个接口,在判断toast的情况下,用selendroid的进程去执行toast判断方法。类似于主进程执行常规case验证,然后到判断toast时候,将这个方法作为进程的执行参数传入,然后将该进程的的结果存入一个进程安全的结果队列queue,之后主进程去该队列读取结果。

#4楼 @seveniruby 你好,你的意思是安卓測試,一般推薦用selendroid mode嗎? 可以解釋下嗎? 感謝!!

#44楼 @erinys 可以示範下,用selendroid mode 如何獲取toast麼?謝謝!

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