Appium [已解决] 要切换成 webview 页面,必须设置 capabilities.setCapability ("automationName","Selendroid") 吗? - 详见 6 楼回复

Mr Wang · 2016年04月02日 · 最后由 matthewD 回复于 2019年03月13日 · 2537 次阅读

在做 webview 跳转的时候,如果我设置 capabilities.setCapability("automationName","Selendroid") 的时候,可以成功跳入 webview 页面,但是 设置 capabilities.setCapability("automationName","Appium") 的时候 却只有一个 NATIVE_APP 的 context,难道 appium 只有在 selendroid 模式下 才能切换到 webview 吗?

报错信息如图:

NATIVE_APP
[2016-04-02 21:03:40] [ERROR] 没有这个context:WEBVIEW_0
io.appium.java_client.NoSuchContextException: No such context found. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 87 milliseconds
Build info: version: '2.53.0', revision: '35ae25b1534ae328c771e0856c93e187490ca824', time: '2016-03-15 10:43:46'
System info: host: 'DESKTOP-790N287', ip: '192.168.118.1', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.7.0_79'
Session ID: 2e2ff480-b825-415e-80de-30daf3eb88a5
Driver info: io.appium.java_client.android.AndroidDriver
共收到 14 条回复 时间 点赞
江门 回复

1.设置手机的 talkback 功能 设置 - 辅助设置-talkback 开启。手机没有这个功能可以再应用商店下一个安装完成。再次进入设置开启就可以了。

2.设置好以后再使用 uiautomatorviewer 截屏 获取定位的元素 内嵌的 webview 和 h5 都可以定位到了。

试试看这个呢

#6 楼 @young 我发现微信的 webview 成了不解之迷,除过你好像没有其它解决成功的案例~所以请一定要赐教一下,我困死在这里好久了~如果可以的话加下我 QQ:153388059

#5 楼 @stylenshain iOS app 也出现类似问题,iOS 也有这个设置么?

—— 来自 TesterHome 官方 安卓客户端

有没有办法不让开发改的?

#5 楼 @stylenshain 请问 setWebContentsDebuggingEnabled 一定要开发帮忙设么,我自己有没有办法设置,我用 PYTHON 写的脚本。。。

#6 楼 @young 那请问这个参数最终是设在开发代码里,还是设在测试脚本里?我找我们开发问了一下,他们根本没人知道这个参数呀~急切需要知道这个问题的解决方法呀~

#6 楼 @young 所以楼主最后的解决方法是,让开发把这个参数改为 TRUE 是么?

#5 楼 @stylenshain 多谢您 我今天也研究了半天 最后确认 setWebContentsDebuggingEnabled 这个参数没有设置成 true

在 Chrome 的启用 USB 网络调试,设置不影响 WebViews。要调试您的 WebView 的内容,您需要启用它在您的应用程序编程调用 setWebContentsDebuggingEnabled 的 WebView 类的静态方法。

要切 WEBVIEW,首先你要让开发给你把上面的方法设置好!!!

#3 楼 @lihuazhang 我试了下 如果设置 appium 为 automationName, appium 为强制把 webview 转换成 安卓 uiautomator viewer 可识别的,简单的说 就是强制转换成 nativ_app ; 如果是 selendroid ,那么 会有多个 context,但是 是 appium 的话 就是一个 native_app context.
不知道 理论上是不是这样的

#2 楼 @young chromedriver 无法感知你的 webview,就只能给你一个 native

#1 楼 @lihuazhang 那使用 appium 方式会只显示 NATVIE_APP 这个 context 吗?

建议先看下 android webview 的大概知识。 Selendroid 进入 webview 的方式是通过 js 注入。而 Appium 本身是使用的 ChromeDriver 的方式。

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