这是一个系列文章,完整的合集链接:Appium 开发环境搭建合集
最近开源团队进入研究源代码的阶段了,本着实践出真知的原则,代码调试成为每个成员必备技能。在此以使用 WebStorm 调试 appium server 作为例子,简单分享一下如何进行代码调试。
根据我目前的经验,Java,Node.js,Python 的 debug 方法基本相同(只是调试 UIAutomator 这种在另一个设备运行的程序需要在 adb 命令加上 debug 并以 remote 形式启动 debugger,详情可参考UIAutomator remote debug 方法),iOS 的 UIAutomation 目前还没 debug 过,还不是很清楚如何 debug 其代码,后面学会后我会补充上来。
调试(debug)
相信大家都在开发口中听过 调试 (debug) 这个词吧?它的意思指的就是通过 调试器 (debugger) 来运行程序,并通过 断点 来让程序在执行过程中停在某个点,或者让程序逐行运行,然后开发就可以看到这时候某个变量/某个对象的内容,从而准确地确定问题的根源。
断点(break point)
断点是指你想让程序暂停的地方。当调试器内的程序运行到断点位置时,调试器会让程序停在执行断点所在代码之前的位置。
以下步骤均在 appium 源码开发环境(已运行
reset.sh --dev
)下进行,使用的 IDE 为 WebStorm(Node.js)。
1、 把 appium 源码文件夹导入 WebStorm,等待 WebStorm 建立好索引(建立索引期间是 run 不了的)
2、建立运行 appium 的配置:
Run->Edit Configurations
3、不加断点,以 debug 模式启动 appium server:
Run->Debug 'appium.js'(此处的运行配置名称是你第二步设定的名称)
此时,你的 appium server 就启动了,你可以从 console 中看到和你平时用控制台启动时输出的一样的 log。当然你也可以像平时使用 appium server 那样使用它
4、添加断点后再次以 debug 模式启动 appium server:
首先,在 appium 的 lib/helpers.js 的第 221 行,即logger.info(logMessage);
处添加断点(在截图中行号 221 与代码之间用鼠标左键点一下就是添加断点了。红点表示这行代码被添加了断点)
然后按照第三步的步骤以 debug 模式启动 appium。稍等一会你会看到如截图所示的情况:
解释一下,我们的断点其实是打在了显示Appium REST http interface listener started on 0.0.0.0:4723
之前(你可以通过对比 console 内容来确认),通过点击窗口左侧绿色的三角按钮就能继续执行(然后你会看到 appium 启动时会显示的其它 log)
WebStorm 的底部的 debug 窗口此时会显示程序运行到断点时的情况。从左往右分别是:帧 (Frames),变量(Variables),监视器(watcher)。他们的大致作用:
同时你会看到底部窗口的顶部会有以下控制按钮:
他们的作用分别是:
a.fun1().fun2()
,你只想确定fun2()
内部实现,那就先 Step Into fun1
,然后 Step Out,再 Step Into fun2()
)Eclipse 配合相关插件也能对 Node.js 进行 debug,各 IDE 的 debug 基本上大同小异,上面提到的功能基本都有。
上文只是简单介绍了调试代码的基础方法,希望能帮到想学习如何调试的各位。谢谢!