问答 ui 自动化关于 webview 元素无法定位问题,求大佬解答

NNCCC007 · 2024年07月08日 · 最后由 浮云 回复于 2024年07月09日 · 5447 次阅读


在 inspect 里是可以定位到登录按钮的,但在 python 里就报错,实在是不知道为什么

共收到 13 条回复 时间 点赞

加等待试试?可能界面还没加载完毕

元素没加载出来,超时了吧。

我的是 APP,我也遇到同样的问题, 弹窗的内容在同一级,没有办法区分开,求大佬分享下怎样处理比较好

//*[text()="登录"]。就可以了,你前面的标签没有任何意义,我元素定位用的多,根据关键字去精准匹配或者模糊匹配,可以解决 90% 以上的定位,不要用太对没有意义的内容

可能页面加载过程中有遮罩之类的,可以先加个固定休眠,看下具体页面加载再调整

最新发现,应该是页面的问题,切换到 webview 后打印不出页面的元素,只输出了这些不知道是什么的东西,

我的也是 app,内嵌的网页

xYLiu 回复

我设置了 60s 等待,也没有用,目前发现应该是页面的问题

CmYzzZ 回复

目前的问题好像是我进入页面并切换到 webview 后,我只能打印出无 body 的网页内容

android 的 AccessabilityService 是要开 webview 相关的 flag 的,默认没开是取不到的,记得当年调 RN 的 app 时,也是要把对应 flag 加上,才能取到。简单的做法是自己写个 talkback 把 flag 加上,运行 talkback 服务就能取了;一个地方加上就可以,影响所有调用 AccessabilityService 的地方

accessibilityservice.xml 中

android:accessibilityFlags="flagDefault|flagRetrieveInteractiveWindows|flagIncludeNotImportantViews|flagReportViewIds|flagRequestTouchExplorationMode|flagRequestEnhancedWebAccessibility|flagRequestFilterKeyEvents"

浮云 回复

没有 AccessabilityService 的话,是要先创建一个吗

NNCCC007 回复

python 的 uiautomator 是有的,它的依赖 app 会创建 AccessabilityService 实例获取 ui 布局,你要不想从这改的话,就自己写个无功能只是开 flag 的 talkback app,启动服务就好

NNCCC007 关闭了讨论 07月17日 19:36
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册