Appium 关于 appium 获取不到 toast 消息的讨论

王声鑫 · 2020年12月21日 · 最后由 bowen 回复于 2021年01月21日 · 3140 次阅读

想要抓取 toast,uiautomator2-driver 已经通过 cnpm 安装了,路径下也能找到对应的文件,执行的时候 app 有自动安装 io.appium.uiautomator2.server,app 也有对应的 toast 出现,但是就是获取不到 toast 信息,请求各位大神帮忙研究一下






共收到 13 条回复 时间 点赞

'//*[contains(@text, "%s") 当然这种 xpath 的定位方式我也试过了,也是一样的定位不了,真的很苦恼不知道问题出在哪里

检查一下定位的时候有没有延时等待,或者跟开发沟通下,把这个 toast 的显示时间增加试试

刘旭 回复

有的,专门写了定位 toast 的方法,给了 10s, element = WebDriverWait(self.driver, 10, 0.01).until(EC.presence_of_element_located(loc)),debug 也是死在这一步,测试的时候,肉眼可见,toast 的时间至少出现三秒,完全是够用的,我还尝试了其他地方的 toast 信息,也是一样不行,所以才很苦恼呀

自己写个有 toast 的 APP 试试
说不定你们 APP 里这个根本不是 toast

王声鑫 回复

看截图 你这个应该是相机的预览 ,是动态页面 ; 和这个问题应该是一样的; 执行定位 toast 时超时,等开始查找 toast 时 toast 已经消失了
https://testerhome.com/topics/27224

xianyu562 回复

好像不是动态页面呢,定位其他元素都很快,而且我有试过其他地方的 toast 也定位不上

黑水 回复

是 toast 的,我这边有看过源码,给的确实是 toast,定位不上应该还是我代码的问题,只是没找到问题在哪,说不准还是我环境哪里没弄好

王声鑫 回复

把 page source 打印出来

黑水 回复

打印出来后的 page_source 没有 toast 的

有没有试过 press 之后就在 setliveroomname 中马上 logger toast,不通过 find 和 get 函数的那种,直接在下面写:

element = WebDriverWait(self.driver, 10, 0.01).until(EC.presence_of_element_located(by.xpath, ""))
logger.info(element.toast)

看一下是否有值

用 OCR 识别吧,多端都可以

王声鑫 回复

请问解决了吗,我也是有的界面获取不到 toast,同样是用一个封装好的判断 toast 是否存在方法,有的页面行,有的就不行。而且确认是 toast,不是 webview 仿的

楼主解决了吗,我也遇到了同样的问题,toast 始终获取不到

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