Appium Appium 在多次切换 webView 后,不执行命令了

二三三三三三三 · 2015年12月03日 · 最后由 大浪 回复于 2016年12月01日 · 2382 次阅读

我有 2 个界面,分别是 A,B


单独进入界面 B,切换到 webview,没有问题。
单独进入界面 A,切换到 webview,没有问题。


进入界面 A,切换到 webview,测试完成,切换 Native app
然后进入界面 B, 切换到 webview, 测试。
这里在界面 B 切换 webView 的时候,就有问题了。。
appium 说 60s 没收到指令,退出。 我的命令行也貌似陷入死循环,死在那。
这个问题不是每次都出现,偶尔有成功的时候。

两个界面以及里面的 webview 几乎都是一样的
webView 的名字是一样的。
我确定每次切换 webView 后都是成功切换的,切换 webview 后,打印当前的 context 的确就是我要切换的 webView
我也确定我要切换的 webView 是存在的。

失败的日志中有这么一段

info: [debug] Found existing Chromedriver for context 'WEBVIEW_测试的 webView'. Using it.

看起来是用了我上一次切换过的 webView?

成功切换的时候 appium 的日志:

info: [debug] Available contexts: NATIVE_APP,WEBVIEW_com.android.settings,WEBVIEW_测试的webView
info: [debug] Connecting to chrome-backed webview
info: Chromedriver: Changed state to 'starting'

没有成功切换的时候, appium 的日志

> info: [debug] ["WEBVIEW_HW.net.winchannel.winsfa"]
> info: [debug] Available contexts: NATIVE_APP,WEBVIEW_测试的webView
> info: [debug] Connecting to chrome-backed webview
> info: [debug] Found existing Chromedriver for context 'WEBVIEW_测试的webView'. Using it.
> info: JSONWP Proxy: Proxying [GET /url] to [GET http://127.0.0.1:9515/wd/hub/session/d6e10cb637531220f7099b9cf151761d/url] with no body
> info: [debug] Didn''t get a new command in 60 secs, shutting down...
> info: Shutting down appium session
共收到 15 条回复 时间 点赞

应该是一个 socket 对应一个 debug 通道,appium 没有处理好。
ps 能把你的应用发出来,看看嘛?

#1 楼 @lihuazhang 你是说 APK 包吗

#3 楼 @sanlengjingvv 看描述是可以! 下载 ing. 谢谢

#3 楼 @sanlengjingvv 晕, 1.5 还没放出来。。 愁人

嗯,和我说的一样,一个 session,一个 socket,一个通道。

#6 楼 @lihuazhang 应用 + 脚本扔群里了。。

Beta 蛮久了,不玩一下吗^ ^
Appium 1.5 Beta Release

我也遇到过, 应该是 appium 问题。
用比较笨的解决方法是运行脚本候在 pc
打开 chrome inspect 就 ok。我是这么解决的,别问我为什么, 我也不知道,折腾我一个多月的结果。

#8 楼 @sanlengjingvv The page you requested doesn't exist or is private. 😪

#9 楼 @jinjun0620 chrome inspect 没搞过诶, 我去找找

#10 楼 @lylyliuyu
改成正确链接了
npm install -g appium@beta
这样就可以安装 Beta 版

对了, 因为某种原因, 不想换到 1.5 及以上的, 这里有个蠢办法。在切回 context 的时候, 去杀死 chromedriver , 下一次他就会重新起这个服务,然后拉取最新的 webview
修改 _applicationmanagement.py

def switch_to_context(self, context_name):
        """切换到NATIVE或者WEBVIEW
        Switch to a new context"""
        if context_name == 'NATIVE_APP':
            os.system('taskkill /im chromedriver.exe')
        self._current_application().switch_to.context(context_name)

#14 楼 @lylyliuyu 你的意思 1.5.3 不会出现这样情况吗? 我换了 1.5.3.dmg 也是一样呢

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