Appium 关于 ios 上,appium inspector 不能识别 webview 页面的问题

Jackey · 2016年05月26日 · 最后由 笑哼 回复于 2018年03月12日 · 2164 次阅读

关于 ios 上,appium inspector 不能识别 webview 页面的问题

1.现象
在 ios 平台上,我用 appium inspector 打开测试 app 的 webview 页面,在 context 项下没有显示 webview 和 native context,只显示一个 no context


2.调试

脚本中使用 driver.getCurrentContext() 返回 result: "NATIVE_APP",尝试过在两次 getCurrentContext 之间做一次 setContext() 到 webview,结果报错,前后两次的 getCurrentContext() 返回 result: "NATIVE_APP"。

报错 log 如下:
alling AppiumDriver.setContext() with args: ["WEBVIEW_com.XXXXXXXXX.activity","1aae4c3f-469f-4d9a-b4a2-0ab05e758d04"] 2016-05-25 10:11:03:121 - [MJSONWP] Encountered internal error running command: RequestError: Error: connect ECONNREFUSED 127.0.0.1:27753 at new RequestError (/usr/local/lib/node_modules/appium/node_modules/request-promise/lib/errors.js:11:15) at Request.RP$callback [as callback] (/usr/local/lib/node_modules/appium/node_modules/request-promise/lib/rp.js:60:32) at self.callback (/usr/local/lib/node_modules/appium/node_modules/request-promise/node_modules/request/request.js:199:22) at emitOne (events.js:90:13) at Request.emit (events.js:182:7) at Request.onRequestError (/usr/local/lib/node_modules/appium/node_modules/request-promise/node_modules/request/request.js:821:8) at emitOne (events.js:90:13) at ClientRequest.emit (events.js:182:7) at Socket.socketErrorListener (http_client.js:306:9) at emitOne (events.js:90:13) at Socket.emit (events.js:182:7) at emitErrorNT (net.js:1249:8) at combinedTickCallback (internal/process/next_tick.js:74:11) at process.tickCallback (internal/process/next_tick.js:98:9) 2016-05-25 10:11:03:124 - [HTTP] <-- POST /wd/hub/session/1aae4c3f-469f-4d9a-b4a2-0ab05e758d04/context 500 23 ms - 214


3.问题:

在 android app 上,开发同学需要在代码中加一句 setWebContentsDebuggingEnabled 的 WebView 类的静态方法,那么在 ios 上是否也有类似的要求?谢谢。


4.截图

共收到 17 条回复 时间 点赞

发帖遵守规则,修复下。

#1 楼 @lihuazhang 晕,我在 mou 中敲半天了,还不符合规范

#3 楼 @lihuazhang 这个问题求指导

在论坛里面搜下 ios-webkit-debugger-proxy,才可以切换 webview。
另外,好像 inspector 本来就看不到 webview,直接看 page_source

#4 楼 @app_test 发帖的规则不修复,帖子就一直 ban 点,如果连续发不遵守规则的帖子,就删号。

Jackey #10 · 2016年05月26日 Author

#6 楼 @lihuazhang 你再审查下

#7 楼 @app_test 不合格。

日志用代码块包裹

@app_test

几个问题:

  1. 真机还是模拟器?
  2. 如果是真机, ios-webkit-debugger-proxy 启动了没有?
Jackey #12 · 2016年05月26日 Author

#10 楼 @lihuazhang 真机,没启动这个 proxy,我再看看

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

Jackey #13 · 2016年05月26日 Author

#11 楼 @seveniruby 好的,谢谢

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

#12 楼 @app_test 真机需要启动 ios-webkit-debugger-proxy

Jackey #17 · 2016年05月26日 Author

#14 楼 启动 webkit-debugger-proxy 后,setContext 还是不成功,set 完,getCurrentContext 还是 native,而且用 execute_script 执行 js 脚本,还是不能成功

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

Jackey 回复

lz 最后有解决吗,最近也碰到了这个问题,启动了 iwdp 也获取不到 webview 元素,getPageResource() 也只是能看到有一个 XCUIElementTypeWebView,具体 webview 元素看不到

楼主解决问题没,同真机,在 safari 浏览器的开发者模式下可以看到 APP 的 webview 元素,但是在用 appium 切换到 webview 时,提示 No such context

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