Appium 从 webview 页面返回没有 webview 的页面,contexts 为何还存在非 native 的 context?

醋精测试媛 · 2021年04月27日 · 最后由 Thirty-Thirty 回复于 2021年05月09日 · 7385 次阅读

在 webview 界面,用 appium inspect 打开,并用里面的 actions 获取所有的 contexts,这时是:

当回到没有 webview 的界面,再一次获取所有的 contexts,这时是:

是没有 webview 的 context 的,但是在程序中,我从 webview 的界面回到没有 webview 的界面(并且 context 没有切换回 native)去获取 driver.contexts,却仍然存在 webview context,刚开始以为是 context 当前没有切换回 native 的问题,然而,我切换回 native 后获取 driver.contexts,仍然存在 webview 的 context,请问这是为什么?

共收到 13 条回复 时间 点赞

返回到 native 页面后,切换到 native

对 笑哼 回复

试过了,切换回 native 后,获取 driver.contexts ,列表中仍然有 webview 的 context

可能是一些流氓应用在手机后台强制运行,这个应用也涉及到网页了,也会被获取出来。

不是的,我有输出出来脚本获取的 contexts,获取的是我测试的软件的 webview 的 context。已关闭所有后台软件。

想确认下,你这里的操作对象,是同一个 app 吗,不同之处只是一个用 appium inspector ,一个用代码的 driver ?

是不是本地的默认浏览器被打开了

对 陈恒捷 回复

是的,没有任何其他应用打开。

对 未来来 回复

已关闭所有后台软件。

会不会是在 APP 里返回非 webview 页面,webview 实例没有销毁

对 胡适 回复

可能是,但是为什么用 appium inspect 就不会呢?

建议用 chrome inpsect 试试,或者在代码里打印一下 context,看下 appium 实际获取到的 context

对 胡适 回复

chrome inspect 只会在处于 webview 的界面时可以看,当前页面确实不在 webview 页面,所以用不了,↑上面有说我是打印了发现 contexts 出现了两个,但是用 appium 的 inspect 显示只有一个。

不从 webview 回到 native,直接在 native 获取 driver.contexts 会怎样?

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