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

mvlin · April 13, 2020 · Last by 花开 replied at April 16, 2020 · 4285 hits

最近使用 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 条回复 时间 点赞
mvlin #1 · April 15, 2020 Author

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

关闭 tbs

mvlin #3 · April 16, 2020 Author
花开 #2 回复

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

mvlin #4 · April 16, 2020 Author
mvlin #3 回复

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

mvlin #4 回复

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

mvlin 关闭了讨论 23 Jun 10:47
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up