Appium 求助基于 APP 腾讯 X5 的 webview 控件无法识别的问题

mvlin · 2020年04月13日 · 最后由 花开 回复于 2020年04月16日 · 2622 次阅读

最近使用 appium 执行测试时遇到了点问题,这个问题以前偶尔也出现过,当时出现了之后过了几天又恢复正常了,就一直没再去研究它。
我想这个问题应该大家经常也会遇到,想请教各位大神,该如何解决。
我测试的应用是混合 H5 应用,之前编写的脚本一直都能正常识别页面中 webview 里的控件,appium-destop 里也能看得到对应的 XPATH 树信息,如下图

但某天之后,webview 里的控件无法识别了,报 noSuchElementExcption 错误,提示找不到控件。
appium-destop 中查看一下,发现原来的 android.webkit.WebView 变成了 com.tencent.tbs.core.webkit.WebView,相应的子元素内容直接没有了,导致无法定位控件。

起初我理解为 APP 更改了该部分的 webview 内核,替换为了腾讯 TBS 的 X5 内核来展示 webview 内容,于是我尝试参考网上关于测试微信小程序应用的配置去重新调试,发现还是不行。
不知各位大神是否遇到过,求指教呀

共收到 5 条回复 时间 点赞

小伙伴们没遇到过?还是我问题表述不清楚😖

关闭 tbs

花开 回复

请问怎么关闭呢?跑这个脚本的手机一直也没有安装微信、qq、qq 浏览器等应用

mvlin 回复

感谢 花开 大神的提醒,最终暂时是找到了权宜的办法。
关于如何关闭第三方应用的 TBS 内核,我目前只通过以下办法处理,不一定适用所有 APP。
找一个二维码生成网站,将 debugtbs.qq.com 生成二维码,从应用内部的 “扫一扫” 功能(不一定所有应用都有扫一扫功能,所以说不一定使用所有 APP),扫描二维码进入到 TBS 调试页面,分别操作 “内核未背禁用” 以及 “清除内核” 功能,重新启动应用后就可以替换为原生的内核了。
因为我测试的 APP,需要每次启动测试前清除数据,所以每次应用启动都会自己生成一些数据,包括 TBS 内核。根据 TBS 官网的 Q&A,应用会优先去共享使用微信手 Q 的内核,如果微信手 Q 没有内核则会在满足条件时自己下载内核,所以本来想下载微信手 Q 来从外部永久禁用 TBS,但是现版本的微信手 Q 的 TBS 调试页面似乎取消了对应的 “内核未被禁用” 以及 “清除内核” 的功能了。所以针对这种情况自己会启动时加载 tbs 内核的应用,只是禁用了应用自己下载的 TBS,那再下次启动测试清除数据后,它自己又会重新加载。没办法之下,只能是调整脚本,采用不清除数据的方式来跑了。
权宜之计,不知有没有更好办法,继续求教。

mvlin 回复

app 里面有开关的,可以找开发定制下,或者看看如何配置一个开关来做这个事情

mvlin 关闭了讨论 06月23日 10:47
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册