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

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

在 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 会怎样?

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